C语言 rand()函数

发布网友

我来回答

6个回答

热心网友

产生整数rand的原理是:
y=ax+b(mod n)其中,n一般是一个很大的素数。
a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x,它被称为seed。
每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话, 虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。
参考:http://hi.baidu.com/piter2010/item/e6fa8ebd5db608e94fc7fd1a追问这个seed,是上一次产生的y的函数,那比如seed初始值为1,然后执行了一次rand(),得到y为5,现在seed=f(y)=8,然后执行rand()得到新的y值。我想问下第一次执行得到的y值5,和seed=f(y)=8,这些是在哪完成的?也是在rand函数中吗?

热心网友

#include <stdlib.h> /*用到了srand函数,所以要有这个头文件*/
#include <stdio.h>
#define MAX 10
int main( void)
{ int number[MAX] = {0};
int i;
unsigned int seed;
scanf("%d",&seed);/*手动输入种子*/
srand(seed); for(i = 0; i < MAX; i++)
{
number[i] = rand() % 100; /*产生100以内的随机整数*/
printf("%d ", number[i]);
}
printf("\n");
return 0;
}

热心网友

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{  
srand(time(0));//设置随机种子
for(int i=0;i<10;i++)
printf("%d ",rand()%100);
printf("\n");
return 0;
}

热心网友

函数 srand() 设置种子值,一般传入当前时间,这样每次rand()出来的都是随机数

热心网友

srand()才能设置种子

热心网友

需要先srand()设置种子值

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com