已知randx构造randx+n
来源:互联网 发布:打印机软件怎么安装 编辑:程序博客网 时间:2024/06/05 15:06
例如如何根据随机函数rand7()来构造rand10()函数。已知rand7()函数返回1-7的随机数,那么rand7()-1将得到一个离散整数集合{0,1,2,3,4,5,6},该集合中每个整数的出现概率1/7,那么(rand7()-1)*7将得到另一个离散整数集合A={0,7,14,21,28,35,42},其中每一个概率也是1/7。而rand7()得到的集合B={1,2,3,4,5,6,7},每一个出现的概率也是1/7,此时A与B任意两个组合可以与1-49一一对应。由于A和B元素看成是独立事件,故P(AB)=P(A)P(B),则每个组合的概率是1/49,因此(rand7()-1)*7+rand7()生成的整数均匀分布在1-49。
现在(rand7()-1)*7+rand7()可以狗仔1-49的均匀分布的随机数了,为了映射到1-10的10种随机数,就需要进行截断。即将41-49截断剔除,得到的1-40仍然是均匀分布,再取余数即可。代码如下
int rand7(){return rand()%7+1;}int rand10(){int x=0;do{x=(rand7()-1)*7+rand7(); }while(x>40);//截断return x%10+1;}
阅读全文
0 0
- 已知randx构造randx+n
- nyoj221 已知条件构造二叉树
- 已知二叉树前序中序,构造二叉树
- 已知二叉树后序中序,构造二叉树
- 已知空間N點坐標求圓心坐標,半徑
- 已知数组a[n],求数组b[n]
- 已知N!之后有几个0,求N
- n阶幻方的构造
- oracle 构造与已知表结构相同的表问题
- 二叉树构造 (已知先序 和中序)
- 根据已知随机数产生器,构造新的随机数产生器
- 已知随机函数RandN(),构造随机函数RandM()
- 已知随机数函数rand7(),如何构造rand10()函数
- 已知先序+中序构造二叉树,已知后序+中序构造二叉树(C语言)
- POJ 2002 Squares(已知平面n点枚举正方形)
- RSA攻击----已知公钥n,e私钥d
- 已知先序后序遍历找n种二叉树问题
- 已知一个整数n,求n^n的前k位
- 类圆颗粒分割与识别
- css 实现 section(块) 的左右滑动,以及块内文字居中的效果
- Tensorflow读取数据的4种方式(8)---《深度学习》
- MongoDb初探(一):windows下MongoDB的安装及配置
- java语言体系
- 已知randx构造randx+n
- 如何优化web服务器以实现高吞吐量和低延迟
- Curzibn / Luban
- spiral-matrix-ii
- springboot部署war
- (4)ARM40-A5板应用程序——SPI应用程序(AD7689)
- JVM内存管理机制--运行时数据区域(详解)
- 永洪BI——国内领军的一站式大数据分析平台
- Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt