陈默 2009年09月04日 星期五 10:57 | 1957次浏览 | 6条评论
标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:
printf("Random numbers are: %i %i\n",rand(),rand());
因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随即并不是正真意义上的随机。
为了时程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。
另外,加上time参数即可。。。 srand(time(0)); i=rand(); 这样i就是一个真正意义上的随机数。
The rand() function returns a pseudo-random integer in the range [0, RAND_MAX].
The srand() function sets its argument as the seed for a new sequence
of pseudo-random integers to be returned by rand(). These sequences
are repeatable by calling srand() with the same seed value.
If no seed value is provided, the rand() function is automatically
seeded with a value of 1.
另外:
x = rand()%11; /*产生1~10之间的随机整数*/
y = rand()%51 - 25; /*产生-25 ~ 25之间的随机整数*/
z = ((double)rand()/RAND_MAX)*(b-a) + a;/*产生区间[a,b]上的随机数*/
Zeuux © 2024
京ICP备05028076号
回复 王单单 2009年09月04日 星期五 17:35
u
int rand()
{
g_seed = g_seed * 0x343fd + 0x269ec3;
return (g_seed >> 16) & 0x7fff;
}
回复 陈默 2009年09月04日 星期五 17:41
回复 陈默 2009年09月04日 星期五 17:37
回复 王单单 2009年09月04日 星期五 17:38
回复 陈默 2009年09月04日 星期五 17:39
回复 王单单 2009年09月04日 星期五 17:40