- 2
- 0
- 约4.81千字
- 约 4页
- 2017-08-10 发布于重庆
- 举报
c产生随机数.doc
用c语言产生随机数?
??????在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void?srand(?int?a)。?
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI?C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。?
rand()会返回一随机数值,范围在0至RAND_MAX?间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767),运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。?在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。具体见下面的例子。?
一? 如何产生不可预见的随机序列呢?
利用srand((unsigned?int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。?
???????在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
?1)?首先给srand()提供一个种子,它是一个unsigned?int类型,其取值范围从0~65535;?
2)?然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)?
3)?根据需要多次调用rand(),从而不间断地得到新的随机数;?
4)?无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。???????
下面是0~32767之间的随机数程序:
?#include?stdlib.h?
#include?stdio.h
#include?time.h???????????//使用当前时钟做种子?
void?main(?void?)
?{
Int ?i;?
srand(?(unsigned)time(?NULL?)?);??????????//初始化随机数??????
for(?i?=?0;?i??10;i++?)??????????????????????????//打印出10个随机数?
??????????printf(??%d\n,?rand()?);?}?
???根据上面的程序可以很容易得到0~1之间的随机数:
?#include?stdlib.h?
#include?stdio.h?
#include?time.h
??main(?)
?{
int?i;?
srand(?(unsigned)time(?NULL?)?);??????????
for(?i?=?0;?i??10;i++?)?
????????????printf(?%5.2f\n,?rand()/32767.0);
?}?
?????而产生1~100之间的随机数可以这样写:
?#include?stdlib.h?
#include?stdio.h
?#include?time.h?
Int?main(?
{
int?i;?
srand(?(unsigned)time(?NULL?)?);??????
????for(?i?=?0;?i??10;i++?)?
????????????printf(?%d\n,?rand()%100+1);?}?
二,三个通用的随机数发生器,推荐用第三个?
函数名:?rand?
?功??能:?随机数发生器??
用??法:?void?rand(void);
??程序例:??
#include?stdlib.h?
?#include?stdio.h
??int?main(void)
??{????
?int?i;??
???printf(Ten?random?numbers?from?0?to?99\n\n);??
???for(i=0;?i10;?i++)??
??????printf(%d\n,?rand()?%?100);?????
return?0;
??}??
??函数名:?random??
功??能:?随机数发生器?
用??法:?int?random(int?num);
??程序例:??
#include?stdlib.h
??#include?stdio
您可能关注的文档
- AaA氨基糖苷类(对G.doc
- Abaqus使用问答.doc
- ABAQUS模拟渗流要点.doc
- access加载DLL错误.doc
- Access安全性概述.doc
- adaxrii磷酸铁锂动力电池.doc
- AELITEFLO低弹性模量流动树脂.doc
- AETOS艾拓思隔夜美数据利好,非美受压跌落.doc
- Ahdeb油田砂土液化评价.doc
- AirportEnglish机场英语.doc
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 高一【美术(人美版)】人作与天开——中国古典园林艺术-教学设计.pdf VIP
- 同济大学《高等数学》授课教案.pdf VIP
- 美国联邦法规.docx VIP
- 嗜酸性肉芽肿性多血管炎诊治多学科专家共识(2025年版).pptx VIP
- 公安看守所智能化安防项目设计方案.pdf VIP
- 23.周亚夫军细柳复习课件.pptx VIP
- 一把手 2025年度在带头强化政治忠诚、提高政治能力;在带头固本培元、增强党性;在带头敬畏人民、敬畏组织、敬畏法纪;在带头干事创业、担当作为;在带头坚决扛起管党治党责任五个带头方面存在的问题.docx VIP
- 土壤导则培训.pptx VIP
- 2025年妇女保健科工作总结暨工作计划.docx
- 河流与湖泊第一课时课件-2025-2026学年八年级地理上学期(人教版2024).pptx VIP
原创力文档

文档评论(0)