当我尝试为各种排序算法生成随机值以对它们进行 gprof 并比较结果时,我注意到 random() 函数在实例中以相同的顺序创建相同的值。有没有办法摆脱它?
示例,我尝试分析冒泡排序,随机创建 10000 个值并对它进行冒泡排序,现在当我给出 10000 个值时,它会生成与之前相同的值集并按相同的顺序生成。
当我将值更改为 1000 时,之前测试的前 1000 个值与本例完全相同。我用不同的可能性更改了值的范围,例如仅正整数和正整数、负整数。 random() 函数生成相同值的原因是什么?有办法解决吗?
最佳答案
当您使用随机时,您需要提供种子,否则您将始终得到相同的结果。常用的种子是当前时间。
如下所示:How to generate a random number in C?
#include <time.h>
#include <stdlib.h>
srand(time(NULL)); // should only be called once
int r = rand(); // returns a pseudo-random integer between 0 and RAND_MAX
关于linux - random() 在 Linux 中函数相同的值(同时 grof ing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44948633/