C语言随机数的生成

C语言随机数的生成c 语言生成随机数 c 语言生成随机数

大家好,欢迎来到IT知识分享网。

C语言随机数的生成

1.随机数的生成-rand()函数

注意: rand() 函数的使用需要调用 库文件 <stdlib.h>

语法:

int rand ( void );

v1 = rand() % 100; // v1 生成的范围是 0 to 99 v2 = rand() % 100 + 1; // v2 生成的范围是 1 to 100 

2.伪随机数

​ 通过运行上述代码,我们发现确实生成了一个随机数,其值为41;

1

但是我们多次进行代码运行测试发现,每次运行的结果都是41。

这说明我们rand()函数 生成的 是一个 伪随机数!!!

3.srand()函数

语法:

​ void srand (unsigned int seed);

头文件:

​ #include<stdlib.h>

功能:

​ 设置rand()随机序列种子。对于给定的种子seed, rand()会反复产生特定的随机序列。

srand函数是随机数发生器的初始化函数,其内部需要一个 unsigned int类型的种子来

注: 很多人并不明白为什么srand函数需要一个种子才能运行:

这是因为计算机的一切行为,都需要对其进行输入数据 才能 输出数据。在没有输入的情况下
计算机是无法凭空给出一系列的数字,更不用说是随机数了。

一旦种子相同,产生的随机数也将是相同的。

代码测试:

srand(1); 和srand(2);

#include<stdio.h> #include<stdlib.h> int main() { 
    srand(1); int v1 = 0; for (int i = 0; i < 10; i++) { 
    v1 = rand() % 100; printf("%d ", v1); } srand(2); printf("\n"); for (int i = 0; i < 10; i++) { 
    v1 = rand() % 100; printf("%d ", v1); } return 0; } 

1


srand(1);没有使用srand(2);

#include<stdio.h> #include<stdlib.h> int main() { 
     srand(1); int v1 = 0; for (int i = 0; i < 10; i++) { 
     v1 = rand() % 100; printf("%d ", v1); } //srand(2); printf("\n"); for (int i = 0; i < 10; i++) { 
     v1 = rand() % 100; printf("%d ", v1); } return 0; } 

1


4.time()函数的引入

很多时候我们刻意让rand()产生的随机数随机化,这个时候就需要一个 能够不断变化的种子

而我们的电脑时间正好是不断变化的;

用时间作种子 srand(time(NULL)),这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。

头文件:

​ #include<time.h>

语法:

​ time_t time (time_t* timer);

功能:

​ 返回当前时间戳,如果发生错误返回零。如果给定参数time ,那么当前时间存储到参数time中。

​ //这里我们不需要存储时间信息,我们只需要通过时间变化来让种子随机变化 ,所以 time()里只需要NULL

用法:srand( (unsigned int ) time(NULL) )

//注:这里的time_t 类型 强制类型转换成了 unsigned int 类型(无符号整数) 因为srand()函数 内参数类型为unsigned int类型

5.总结

想要生成一个真随机的随机数

需要:

头文件:

#include<stdlib.h> #include<time.h> 

生成随机数代码:

srand( (unsigned int ) time (NULL) ); int ret = rand(); //ret用来接收随机数 

代码演示:

#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { 
       int i = 0; srand((unsigned int)time(NULL)); for (i = 0; i < 10; i++) { 
       int ret = rand() % 50 + 1; //生成十个范围在 1~50的随机数 printf("%d\n",ret); } return 0; } 

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122833.html

(0)
上一篇 2025-10-13 18:33
下一篇 2025-10-13 19:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信