Tag: 随机

C / C ++算法在不同平台上从同一种子生成相同的伪随机数序列?

标题说明了一切,我正在寻找一些最好的东西,因为我不想添加更多的库。 性能应该很好,因为我需要一个紧凑的高性能循环。 我想这将以随机程度为代价。

与彩票调度程序的LCG相比,更好的(伪)随机数发生器是什么?

我想设计一个彩票调度器,我需要一个非常好的(伪)随机数发生器,类似于LCG,但我想知道是否还有其他更好的选择? 我特意寻找用C编写的随机生成器。 LCG代码: unsigned long lcg_rand(unsigned long a) { return (a * 279470273UL) % 4294967291UL; } 另外我想知道srand()可以用于此目的还是不准确?

使用pthread在C中生成随机数的最正确方法是什么

我有几个并发运行的线程,每个线程都必须生成随机数。 我想了解是否存在要遵循的模式,以了解在主线程中使用srand初始化随机生成器是否正确,或者每个线程是否必须初始化其自己的随机生成器。 似乎rand / srand没有被设计为与线程一起使用,我想知道如何处理线程和随机数。 谢谢 编辑:我需要纯随机数,但我也有兴趣为测试目的生成确定性序列。 我在Linux上,但我更喜欢尽可能地编写代码。

qsort是否要求进行一致的比较,还是可以将其用于改组?

更新 :请在糟糕的想法下提交。 生活中没有任何免费的东西,这肯定是证据。 一个简单的想法变坏了。 然而,这绝对是值得学习的东西。 懒惰的编程挑战。 如果我传递一个50-50为qsort的比较函数返回true或false的函数,我认为我可以有效地取消编写3行代码的结构数组。 int main ( int argc, char **argv) { srand( time(NULL) ); /* 1 */ … /* qsort(….) */ /* 2 */ } … int comp_nums(const int *num1, const int *num2) { float frand = (float) (rand()) / ((float) (RAND_MAX+1.0)); /* 3 */ if (frand >= 0.5f) return GREATER_THAN; […]

srand(1)和srand(0)之间有什么区别

我刚刚发现srand(1)在调用srand (如参考文献中定义)之前将C(++)的PRNG重置为状态的困难方式。 然而,种子0似乎做同样的事情,或者在调用srand之前的状态似乎使用种子0.这两个调用之间有什么区别或者他们做同样事情的原因是什么? 例如这段代码( 在Ideone上执行 ) #include #include int main() { for (int seed = 0; seed < 4; seed++ ) { printf( "Seed %d:", seed); srand( seed ); for(int i = 0; i < 5; i++ ) printf( " %10d", rand() ); printf( "\n"); } return 0; } 回报 Seed 0: 1804289383 846930886 1681692777 […]

根据概率挑选随机项目

我知道,有一个类似的问题 ,但它使我感到困惑,所以我觉得以我的方式提问更容易。 所以我有一系列价值观,正面和负面。 它们越高,被选中的概率就越大。 我实际上无法确定如何分配概率,然后随机选择一个。 我猜这个数组需要先排序,但之后我就有点迷失了。

比rand()更快?

我正在研究一种算法,它需要尽可能快地生成数百万个数字。 实际上我发现算法的rand()函数占用了75%的处理时间。 所以我正在寻找更快的东西。 而且我根本不需要大范围。 (我只需要1000以下的整数) 你知道我能用的东西吗? 谢谢 ! 编辑: 我使用这个数字来改组少于1000个实体的组。 我发现了更多关于“快速兰特”的信息。 还有SSE版本,速度更快,一次生成4个数字。 https://software.intel.com/en-us/articles/fast-random-number-generator-on-the-intel-pentiumr-4-processor/

如何使用C rand()函数生成具有p概率的布尔值?

如何使用C标准库rand()函数生成概率为p (其中0 <= p <= 1.0)的随机布尔值? 即 bool nextBool(double probability) { return … }

C:关于rand,random和arc4random的确定真相

关于这个主题有很多相互矛盾的信息。 所以,让我们尝试就明确的答案达成一致: C中这些随机数生成器中的哪一个创建了更好的随机性:rand,random或arc4random? 注意:只是为了使问题清楚,这不是关于真正随机性的问题,它只是那些3之间的冲突。 正如所指出的那样,这个问题没有多大意义,因为这不是关于C,而是关于一个特定的实现,在我的例子中,cocoa(更具体地说是iphone sdk,但我的猜测是它们是相同的,因为这些functiongo)。 不过,这里有一些有用的信息。 我通过实现arc4random得出结论,主要是因为它易于使用(不需要播种),这是一个没有人指出的重要因素。 我正在关闭这个问题,并为cocoa开发人员添加cocoa标记,以寻找有关RN​​G的信息。 非常感谢那些贡献的人,并为这种困惑感到抱歉。

随机浮点数

我编写了这个函数来获得0 … 1之间的伪随机浮点数: float randomFloat() { float r = (float)rand()/(float)RAND_MAX; return r; } 但是,它总是返回0.563585。 无论我运行控制台应用程序多少次,都是相同的数字。 编辑: 如果需要,这是我的整个申请: #include #include float randomFloat() { float r = (float)rand() / (float)RAND_MAX; return r; } int main(int argc, char *argv[]) { float x[] = { 0.72, 0.91, 0.46, 0.03, 0.12, 0.96, 0.79, 0.46, 0.66, 0.72, 0.35, -0.16, -0.04, -0.11, […]