random() 在 linux 中函数相同的值(在 grof ing 时)

random() function same values in linux (while grof ing)

当我尝试为各种排序算法生成随机值以对它们进行 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