cr315 发表于 2023-5-13 11:00

C语言的算法:生成随机数

学技术,重在日拱一卒、一点一滴的积累。
今天,我们一起来分析C语言的算法:生成随机数。
算法项目:用C语言获取一个随机数,随机数范围在一个范围之内。
编程思路:
1、C语言库函数中,有获取随机数函数,名称为rand(), 可以通过该函数获得一个非负整数的随机数。
2、要调用rand需要引用头文件stdlib.h。要让随机数限定在一个范围,可以采用模除,加加法的方式。
3、要产生随机数r, 其范围为 m<=r<=n,可以使用如下公式:rand()%(n-m+1)+m,其原理为:对于任意数,0 <= rand()%(n-m+1) <= n-m;即rand()%(n-m+1)生成的随机数是在0到n-m之间的),于是0+m <= rand()%(n-m+1)+m <= n-m+m(于是给这个随机数加上m就可以得到m到n-m之间的随机数),即m<=rand()%(n-m+1)+m<=n。



[*]#include<stdio.h>
[*]
[*]#include<stdlib.h>
[*]
[*]#include<time.h>
[*]
[*]/*生成6个在68-100之间的随机数*/
[*]
[*]void main()
[*]
[*]{
[*]
[*]int random;
[*]
[*]char i;
[*]
[*]srand(time(NULL));
[*]
[*]for(i=0; i<6; ++i)
[*]
[*]{
[*]
[*]    /*29=100-68+1*/
[*]
[*]    random =68+rand()%33;
[*]
[*]    printf("%d ",random);
[*]
[*]}
[*]
[*]}



yangxiaor520 发表于 2023-5-14 20:03

大学时做了一个抽奖器,便是用的这个函数。

keaibukelian 发表于 2023-6-10 11:08

这种通过软件生成的随机数是伪随机数

wowu 发表于 2023-6-10 11:42

在单片机c语言中,有生成随机数的成熟的函数可供调用吗?

heimaojingzhang 发表于 2023-6-10 11:52

wowu 发表于 2023-6-10 11:42
在单片机c语言中,有生成随机数的成熟的函数可供调用吗?

楼主介绍的这个函数就是c中的生成随机数的函数 可以直接调用的

renzheshengui 发表于 2023-6-10 13:13

C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。

tpgf 发表于 2023-6-10 13:27

rand() 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布

Demon、殇 发表于 2023-7-20 09:47

国名的srand好像不是标准的c语言库,他会报undefined symbol time,不调用srand就不能时间播种,就不能生成每次上电不一样的随机数了;

jf101 发表于 2023-9-26 13:28

rand() 函数产生的随机数是伪随机数,进行生产随机的数值

szt1993 发表于 2023-9-26 15:21

rand是伪随机数,是公式推出来的,随机数要用srand

小夏天的大西瓜 发表于 2023-9-27 13:03

直接rand() 函数进行程序编写
页: [1]
查看完整版本: C语言的算法:生成随机数