前言
萌新发文,希望能够帮到大家
随机数有什么用?
在我们的各种程序中常常需要随机数生成的值,就比如之前三子棋游戏中,电脑下棋的位置是可以使用随机数生成的。在之后我会发布一个扫雷的讲解,里面的雷的布置,也是需要通过随机数来获取坐标的。
生成随机数需要使用的函数
rand()
在这个过程中,我们需要使用rand()函数.
使用代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
for (int n = 0; n < 10; n++)
{
int i = rand();
printf("%d\n", i);
}
return 0;
}
此时我们运行代码,这里我得到一个结果
当我再次运行这个代码的时候,我获得了同样的结果
所以,我们通过观察这两个图片可以发现,这个东西表面上是随机数,实际上只是一个伪随机
此时,我们引入另一个函数 srand()
srand()
我们使用srand()函数,参数需要一个整形参数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
srand(100);
for (int n = 0; n < 10; n++)
{
int i = rand();
printf("%d\n", i);
}
return 0;
}
运行几次之后发现,得到的值还是一个固定的的值,此时,我们引入一个概念叫做时间戳
时间戳
在电脑上唯一随时改变的数字就是时间了。
所以,我们通过时间来作为srand()的参数的话,就能得到真正的随机数了
为了使用它,我们需要准备两个头文件
time.h
stdlib.h
同时,由于srand()需要一个整形参量,而time返回的是time_t类型的数据,所以我们使用强制类型转换:
unsigned int
代码
具体代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
for (int n = 0; n < 10; n++)//为了让大家看得更真切,所以写了for循环,多打印了一些
{
int i = rand();
printf("%d\n", i);
}
return 0;
}