C语言用rand()srand()产生随机数

随机数的应用:

游戏,安全加密,抽样...

1.Windows随机函数产生的随机数不是真正意义下的随机数,而是通过一个随机数种子,不断得到下一个"随机数",然后将种子改成这个随机数。

2.通过单纯的编程很难得到一个真正的随机函数,UNIX系统下一个随机函数是通过硬件的信息(例如硬件发出的噪音)等等来得到的随机数。

C库函数rand()

描述:
1.返回一个范围在 0 到 RAND_MAX 之间的伪随机数。
2.RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。
rand()函数的声明

int rand(void)

3.每次打印操作,理论每次返回值是一样的如图:

再次运行随机数字没有改变

为了每次返回值不同所以引入种子生成函数。

C库函数srand()

描述:
1.C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。
2.seed:伪随机数字种子生成器。

用系统时间来充当种子

一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,一直在变,相当于随机数。只要用户不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。
即:只需在主程序开始处调用 srand((unsigned)time(NULL)),srand((unsigned)time(0)); 后面直接用rand就可以了。不要在 for 在循环放置 srand((unsigned)time(NULL));

#include <stdio.h> 
#include <time.h>
#include<stdlib.h>
int main() {
		srand((unsigned)time(NULL));
			printf("%d\n",rand());
			printf("%d\n", rand());
			printf("%d\n", rand());
			printf("%d\n", rand());
			printf("%d\n", rand());
	return 0;
}

运行如下:

posted @   1(*^_^*)1小菜  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示