首页 / C语言 / C语言取大随机数的问题
C语言取大随机数的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言取大随机数的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含683字,纯文字阅读大概需要1分钟。
内容图文
首先rand()取得的随机数是在一定的范围内的,一般是0x7fff,即32767
那么要利用此函数取比此大的随机数该怎么办,我觉得只有一个办法,就是拼接
通常我们会犯这样的错误:即rand()*rand()这样感觉是不是取到了一个更大的随机数,因为随机乘以随机还是随机嘛,但实际上是错误的
你可以把rand()函数当做一个重复的全排列,假设现在有6个数字(取得的概率是相同的)
rand1() :1 2 3 4 5 6
rand2() :1 2 3 4 5 6
那么现在看看结果与其取得的概率(仅举两例)
rand1()*rand2() P
2=1*2,2*1 1/6 * 1/6+1/6 * 1/6=2/36
12=3*4,4*3,2*6,6*2 1/6 * 1/6+1/6 * 1/6+1/6 * 1/6+1/6 * 1/6=4/36
可以由此看出这样取是不可取的,因为获取的数字概率是不相同的,这肯定就不满足随机的概念(即每个数字被选取到的概率应该相同)。
但是拼接是可取的
比如2和12
我们可以想象成两个空位(分别代表rand1与rand2)
___ ___
每个空位有如下选择
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
那么 2就是0 2 所以P(x=2)=1/10*1/10=1/100
那么12就是1 2 所以P(x=12)=1/10*1/10=1/100
毫无疑问,拼接是没有任何问题的
原文:https://www.cnblogs.com/gambler/p/9124540.html
内容总结
以上是互联网集市为您收集整理的C语言取大随机数的问题全部内容,希望文章能够帮你解决C语言取大随机数的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。