随机生成一个数字
rand(void)%n 随机函数
能返回0~32767之间均匀分布的伪随机整数(起始值一般都默认为1)。
用rand()随机生成一个整数
#stdlib.h
void main()
{
for(int x=0;x<100;x++)
printf("%d\n",rand()%10);
}
//结果是 0 - 9 之间的数字,共10个数。
再运行一次,怎么老是你
#include<stdio.h>
#include<stdlib.h>
void main()
{
for(int i=0;i<5;i++)
printf("%d\n",rand()%10);
}
1
7
4
0
9
如果我们是第一次运行, 会得到,然后再运行一次,发现还是17409
WTF??? 说好的随机数列呢?
种子——更改初始值
原来rand()生成伪随机数时需要一个种子——初始值,如果种子相同就会得到相同的序列结果。
srand(int num) ——用来设置随机数种子。
如果未设随机数种子, rand()在调用时会自动设随机数种子为1。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
srand(2);
for(int x=0;x<10;x++)
printf("%d\t",rand()%5);
}
// 0 1 3 0 4 此时默认的第一个将不再是1。
时间——初始值随机化
0、虽然我们已经做到了*选定种子,但我们都倾向于让它自然生成。
1、要自然生成,最简单的方法,就是利用系统时间,因为时间的数值随时间变化而变化
2、time(NULL) 会返回一个表示当前系统时间的整数,表示的结果是自1970年1月1日到现在的秒数
3、 据说如果软件一直开两天,种子会有1/(606024)个可能会重复,一般 已经足够了,
#include<time.h>
printf("%d\n",time(0));
printf("%d\n",time(NULL));
//比如:现在我得到的是:1636096339
最终
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d\n",rand()%10);
}