您的位置:首页 > 编程语言 > C语言/C++

C语言如何生成随机数

2018-03-24 15:20 253 查看

C语言如何生成随机数

生成10个100以内的随机数

废话不多说直接上程序。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int ret = 0;
srand((unsigned int)time(NULL));
for(int i=0; i<10; i++)
{
ret = rand()%100;
printf("%d ",ret);
}
return 0;
}




这个程序是用来生成10个随机的数。接下来会详细说一说这个程序的构成。

随机数生成代码的分析

以上程序的关键代码是:

srand = ((unsigned)time(NULL));
ret = rand()%100;


rand()函数所需头文件是

#include<stdlib.h>


rand()是生成伪随机数的函数,它会按照一定的序列来生成随机数,但是它序列是固定的:



程序每次执行它都将按照这个序列来给出随机数,所以在对rand()不加限制条件的话,生成的随机数不够随机。

time()函数所需要头的头文件是:

#include<time.h>


time()函数,值得注意的是time函数的形参,这个形参是个指针变量,通常写为time(NULL)。

这个函数的功能是,返回自1970年1月1日00:00:00到你先在电脑运行的时间(例:2018年3月24日14:14:00)之间的时间。这个数是随机的,随着你电脑运行时间而发生改变。

srand()函数所需要的头文件是:

#include<stdlib.h>


srand()函数是伪随机数发生器种子,它给rand()函数一个产生一个起点。在单独使用rand()函数的时候,它将1作为默认参数。srand()的形参是一个无符号的类型,即unsigned类型,可以是int,float,char等等。

但在这里为了达到随机数效果,将使用time()函数来产生一个起点,它直接作用于rand()函数。

注意:

ret = rand()%100;


rand()%100是为了产生100以内的随机数。

有趣的小程序

这是一个电脑自己猜数字的小程序。

#include<stdio.h>
#include<time.h>#include<process.h>
#include<stdlib.h>#include<Windows.h>
int main()
{
int ret = 0;
int guess = 0;
int left = 0;
int right = 100;
srand((unsigned int)time(NULL));
ret = rand() % 100;
printf("提供的答案数是->%d\n",ret);
guess = 50;
while (1)
{
if (guess > ret)
{
printf("猜大了->%d\n", guess);
right = guess;
guess = (right + left) / 2;
Sleep(1000);
}
else if (guess < ret)
{
printf("猜小了->%d\n", guess);
left = guess;
guess = (right + left) / 2;
Sleep(1000);
}
if (guess == ret)
{
printf("猜到了是%d", guess);
break;
}
}
system("pause ");
return 0;
}




这里使用了二分法的思想,让电脑自己去猜100以内的一个数。

使用了Sleep()函数用来延迟一下打印时间,Sleep()函数的参数的单位是ms,所以1000ms=1s。

谢谢您的阅读
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 随机数