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

Posted

技术标签:

【中文标题】linux 中 random() 函数相同的值(同时 grof ing)【英文标题】:random() function same values in linux (while grof ing) 【发布时间】:2017-07-06 12:16:31 【问题描述】:

当我尝试为各种排序算法生成随机值以对它们进行 gprof 并比较结果时,我注意到 random() 函数在实例中以相同的顺序创建相同的值。有没有办法摆脱它?

示例我尝试分析冒泡排序,因此随机创建了 10000 个值并对其进行冒泡排序,现在当我给 10000 个值时,它再次生成与之前相同的一组值并以相同的顺序。

当我将值更改为 1000 时,之前测试的前 1000 个值与本例完全相同。我用不同的可能性改变了值的范围,比如只有正整数和正整数、负整数。 random() 函数生成相同值的原因是什么?有没有办法解决它?

【问题讨论】:

您使用什么语言?是 C、C++ 还是其他? “random() 函数”不明确。您需要指定语言(这比指定操作系统更重要)。 @jww 我正在使用 C 【参考方案1】:

当您使用随机时,您需要提供种子,否则您将始终得到相同的结果。常用的种子是当前时间。

如此处所示: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

【讨论】:

你能详细说明一下吗? @ManojOffo 你用的是什么语言?

以上是关于linux 中 random() 函数相同的值(同时 grof ing)的主要内容,如果未能解决你的问题,请参考以下文章

伪随机数算法

关于random_shuffle的一个疑问

random.seed()函数理解

random VS numpy.random

random VS numpy.random

Random库用法详解