打印
[其它应用]

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

[复制链接]
530|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2023-5-13 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学技术,重在日拱一卒、一点一滴的积累。
今天,我们一起来分析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语言中,有生成随机数的成熟的函数可供调用吗?

使用特权

评论回复
5
heimaojingzhang| | 2023-6-10 11:52 | 只看该作者
wowu 发表于 2023-6-10 11:42
在单片机c语言中,有生成随机数的成熟的函数可供调用吗?

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

使用特权

评论回复
6
renzheshengui| | 2023-6-10 13:13 | 只看该作者
C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。

使用特权

评论回复
7
tpgf| | 2023-6-10 13:27 | 只看该作者
rand() 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布

使用特权

评论回复
8
Demon、殇| | 2023-7-20 09:47 | 只看该作者
国名的srand好像不是标准的c语言库,他会报undefined symbol time,不调用srand就不能时间播种,就不能生成每次上电不一样的随机数了;

使用特权

评论回复
9
jf101| | 2023-9-26 13:28 | 只看该作者
rand() 函数产生的随机数是伪随机数,进行生产随机的数值

使用特权

评论回复
10
szt1993| | 2023-9-26 15:21 | 只看该作者
rand是伪随机数,是公式推出来的,随机数要用srand

使用特权

评论回复
11
小夏天的大西瓜| | 2023-9-27 13:03 | 只看该作者
直接rand() 函数进行程序编写

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1202

主题

3141

帖子

0

粉丝