函数rand函数什么意思

C語言 rand函数 进阶探讨与实现_Linux编程_Linux公社-Linux系统门户网站
你好,游客
C語言 rand函数 进阶探讨与实现
来源:Linux社区&
作者:keshacookie
C语言中随机函数应用
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。那么怎么实现C语言中的随机函数呢?
除了random函数,还有一个rand函数,也是一个随机函数,可以产生从0到rand_max的随机数。
#include &stdio.h&#include &stdlib.h&
int main(){& && & x = rand();& & printf("%d\n", x);& & return 0;}
运行上面的代码,你会发现系統确实生成了一个随机数,但是继续运行多几次,你会发现系统生成的数字还是以前那个,什么情况,伤我感情~~
原來是因为随机数取在C语言中采用的是固定序列,所以每次执行所取的是同一个数。
但是,仔細想想,如果要生成一大堆不一樣的随机数,那要怎么做啊,跪求苍天啊啊啊啊啊啊~~~~ 那是没有用滴,还不如靠自己~~
#include &stdio.h&#include &time.h&#include &stdlib.h&
int main(){& && & time_& & srand((unsigned) time(&t));& & for(int i=0; i&10; i++) {& & & & printf("%d\n", rand()%100); //生成10個0~99的不同隨機數& & }& & return 0;}
这时运行程序,会发现每次产生的随机数都不一样。
那么为什么第一个程序一样而第二个程序不一样呢?
第二个程序用到了一个新的函数srand,这个函数是给随机数产生一个随机种子(seed),函数原型是
srand( (unsigned) time(NULL));
time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
所以说,要想产生不同的随机数,在使用rand之前需要先调用srand
由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?
从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:
k=rand()%(Y-X+1)+X;
这样,就可以产生你想要的任何范围内的随机数了。
C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码
读C++ Primer 之构造函数陷阱
读C++ Primer 之智能指针
读C++ Primer 之句柄类
将C语言梳理一下,分布在以下10个章节中:
Linux-C成长之路(一):Linux下C编程概要
Linux-C成长之路(二):基本数据类型
Linux-C成长之路(三):基本IO函数操作
Linux-C成长之路(四):运算符
Linux-C成长之路(五):控制流
Linux-C成长之路(六):函数要义
Linux-C成长之路(七):数组与指针
Linux-C成长之路(八):存储类,动态内存
Linux-C成长之路(九):复合数据类型
Linux-C成长之路(十):其他高级议题
本文永久更新链接地址:
相关资讯 & & &
& (03月14日)
& (03/15/:43)
& (03月14日)
& (07/25/:51)
& (03/09/:10)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款randint函数后面参数什么意思randint(1,N,M)
ycycrfv5240
RANDINT 在MATLAB中用于产生基质的均匀分布的随机整数.用法:1.OUT = RANDINT产生一个“ 0 ”或“ 1 ”等概率2.OUT = RANDINT(M)生成的M 矩阵的随机二进制数字,“ 0 ”和“ 1 ”出现的概率均等.3.OUT = RANDINT(M,N)生成的(M,N) 矩阵的随机二进制数字,“ 0 ”和“ 1 ”出现的概率均等.4. OUT = RANDINT(M,N,RANGE)生成的(M,N) 矩阵的随机二进制数字,RANGE 范围可以是标量或向量:标量 :为正的话,取值为[0,RANGE-1] ,为负的话,取值为 [RANGE+1, 0].向量 : 取值为[RANGE(1), RANGE(2)].5.OUT = RANDINT(M,N,RANGE,STATE)resets the state of RAND to STATE.
为您推荐:
其他类似问题
扫描下载二维码rand函数用法汇总_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
rand函数用法汇总
上传于||暂无简介
大小:1.91KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢randperm_百度百科
randperm是matlab函数,功能是随机打乱一个数字序列。
randperm函数简介
函数功能:随机打乱一个数字序列。
语法格式:
y = randperm(n)
y是把1到n这些数随机打乱得到的一个数字序列。
:相关函数
randperm程序示例
--& randperm(5)
ans = 2 4 1 5 3
--& randperm(3)
ans = 2 3 1
--& randperm(5)
ans = 2 5 1 3 4
--& randperm(4.5)
ans = 5 3 1 2 4
&& randperm(5)
ans = 2 3 4 1 5
&& randperm(3)
ans = 2 1 3
&& randperm(5)
ans = 4 5 2 3 1
&& randperm(4.5)
Warning: Size vector should be a row vector with integer elements.
& In randperm at 13
ans = 3 1 2 4
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]
rowrank = randperm(size(A, 1)); % 随机打乱矩阵的行数
B = A(rowrank, :)
一个可能的输出结果:
A = randperm(6,3)
[4 2 5] %结果为随机生成,具体执行结果可能不同
企业信用信息在EXL里面函数
=FIXED($AD$4+RAND()*($AD$5-$AD$4),3,1)
分别每一个函数的意思和作用
FIXED(number,decimals,no_commas)用于将所选数字以特定格式返还为文本三个参数number:你要转换的数字decimals:保留的位数,进行四舍五入(1为小数点后1位)no_commas:是否保留前分号,1为保留前分号你的这段函数里面FIXED是框架函数,他的意思是要将$AD$4+RAND()*($AD$5-$AD$4)数值保留到小数点后三位,并显示前分号。那么$AD$4+RAND()*($AD$5-$AD$4)是什么意思呢?首先 $是绝对引用标识, 即此公式在下拉时不会变化。RAND() 返回一个0~1的随机数那么整体的意思就是用单元格AD4的数值 加上 AD5单元格减去AD4单元格的差额乘以0~1的随机数并将此数值保留三位,并显示前分号。希望能够帮到你
为您推荐:
首先$AD$4、$AD$5是绝对引用的意思,意思是公式复制等操作这些单元格位置不变,一直引用单元格AD4与AD5RAND()表示随机一个0~1之间的数字fixed表示对数值舍入成为特定位数的带逗号或不带逗号的文本fixed(数字,位数,是否带逗号)上面这个公式表示小数后3位不带逗号...
rand()是得到0到1之间的一个随机数,$AD$4+RAND()*($AD$5-$AD$4)得到AD4与AD5之间的一个随机值fixed(,3,1)把得到的随机值返回为文本的形式,不是数值。3表示保留三为小数,1表示不显示千分位的逗号,假设$AD$4+RAND()*($AD$5-$AD$4)得到的结果为,那么整个公式返回的结果就是(这个数...
分步说明吧:1、RAND()*($AD$5-$AD$4)是指用一随机数RAND()乘以(单元格$AD$5减去$AD$4的差)的积,$AD$4+RAND()*($AD$5-$AD$4)是指再加上单元格$AD$4的数值,再对得到的数值四舍五入FIXED,后面的1表示四舍五入后返回值不带逗号,3表示的是四舍五入到小数点后第三位...
扫描下载二维码}

我要回帖

更多关于 rand函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信