#include<stdio.h>
#include<stdlib.h>
int main()
{
srand(1);
int i;
for(i=0;i<10;i++)
printf("返回的随机数是:%d\n",rand();
}
结果
如果改成取0到5之间的随机数 每次取得值就是一样的了
#include<stdio.h>
#include<stdlib.h>
int main()
{
srand(1);
int i;
for(i=0;i<10;i++)
printf("返回的随机数是:%d\n",rand()%5);
}
种子如果一样,则每次的序列不都一样么?
6 个解决方案
#1
srand(time(0));
#2
srand(time(0)); 用时间来初始化种子
#3
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
同样的种子得出同样的序列。
你的截图和我运行两次的结果对比,可以发现:你的第一个序列是不对的(可能代码不对或者不是相同的程序)。
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
同样的种子得出同样的序列。
你的截图和我运行两次的结果对比,可以发现:你的第一个序列是不对的(可能代码不对或者不是相同的程序)。
#4
种子相同,每次调用rand()函数出来的随机数都是相同的,种子不同,rand()出来的随机就不会相同,一般种子多选用获取当前的时间,这样每次rand()的值都不会相同的
#5
应该是一样的。
基本上都是用系统时间做种子,不过这也是伪随机。
基本上都是用系统时间做种子,不过这也是伪随机。
#6
srand((int)time(0));
#1
srand(time(0));
#2
srand(time(0)); 用时间来初始化种子
#3
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
同样的种子得出同样的序列。
你的截图和我运行两次的结果对比,可以发现:你的第一个序列是不对的(可能代码不对或者不是相同的程序)。
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
[root@localhost d]# ./a
1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
同样的种子得出同样的序列。
你的截图和我运行两次的结果对比,可以发现:你的第一个序列是不对的(可能代码不对或者不是相同的程序)。
#4
种子相同,每次调用rand()函数出来的随机数都是相同的,种子不同,rand()出来的随机就不会相同,一般种子多选用获取当前的时间,这样每次rand()的值都不会相同的
#5
应该是一样的。
基本上都是用系统时间做种子,不过这也是伪随机。
基本上都是用系统时间做种子,不过这也是伪随机。
#6
srand((int)time(0));