c语言随机数srandom( );50
发布网友
发布时间:2023-10-11 12:25
我来回答
共3个回答
热心网友
时间:2024-11-07 10:40
要从随机数说起
调用随机数函数 rand() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值,通过一个算法,计算出来的“伪随机数"数列,每次调用rand()时,从这个数列依次取出一个值,做为随机数。这个初始的值就是"随机数种子", 也就是说,如果随机数种子相同,计算出的随机数数列是相同的。而srandom( x) 这个函数就是初始化随机数产生器,设定随机数种子用的。给定的x的就是随机数种子。可以验证,当你多次调用srandm(x)时,如果x取值相同,则得到的随机数数列是一样的。所以,若我们每次运行程序时,要得到不同的随机数序列,就应该用不同的种子来初始化这个随机数产生器。比如说,用时间初始化它,或者用getpid(),用进程的pid号初始化,由于每次运行程序时,它的pid号一般是不同的,所以能够产生不同的随机数序列。
热心网友
时间:2024-11-07 10:40
srandom是用来初始化一个种子的。实际上就相当于给定了一个值。只不过这个值对其他变量没有用的。追问那这段程序有什么用,自己产生一个随机数,然后也不给谁赋值,产生着玩?
追答那就搞不懂了,你找找他是不是逗后面的程序玩呢。
热心网友
时间:2024-11-07 10:41
The random() function uses a non-linear additive feedback random number
generator employing a default table of size 31 long integers to return
successive pseudo-random numbers in the range from 0 to RAND_MAX. The
period of this random number generator is very large, approximately
16 * ((2^31) - 1).
The srandom() function sets its argument as the seed for a new sequence
of pseudo-random integers to be returned by random(). These sequences
are repeatable by calling srandom() with the same seed value. If no
seed value is provided, the random() function is automatically seeded
with a value of 1.
需要先 使用srandom()函数赋随机数种子值。然后再使用 random()函数来产生随机数。是对srand()和rand() 这两个函数的改良,用法也很类似。
void srandom(unsigned int seed); getpid()获得的进程id 就当作是一个种子