其他分享
首页 > 其他分享> > 随机函数rand(void)%n

随机函数rand(void)%n

作者:互联网

随机生成一个数字

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);
}

标签:rand,int,void,随机,随机数,include,种子
来源: https://www.cnblogs.com/tupo/p/15513521.html