给定RAND5,写出RAND7
来源:互联网 发布:nginx tomcat 子域名 编辑:程序博客网 时间:2024/05/22 13:26
描述:给定能随机生成整数1到5的函数rand5(),写出能随机生成整数1到7的函数rand7()
这个题网上有很多各种各样的答案,但是感觉都不太科学。做为一个学统计的ds,用概率论
的方法来解决这个问题。
先假定给定的函数产生的是均匀分布,即 f(x=i)=1/5 , i=1,2,3,4,5。
假设随机变量x=rand5()*(rand5()-1)
则x的分布为
x 0 1 2 3 4 5 6 8 9 10 12 15 16 20
p 5/25 1/25 2/25 2/25 3/25 1/25 2/25 2/25 1/25 1/25 2/25 1/25 1/25 1/25
可以发现p=1/25的数有7个,其实只要有相同概率的数超过7个就行,记
A={1,5,9,10,15,16,20}
B={1,2,3,4,5,6,7}
做映射 f:A->B
f(Ai)=Bi
可以证明这样产生的随机数也是均匀分布的,用条件概率
p(x=i|x in A)=p(x=i)/p(x=i,x in A)=(1/25)/(1/25)=1/7
这个题网上有很多各种各样的答案,但是感觉都不太科学。做为一个学统计的ds,用概率论
的方法来解决这个问题。
先假定给定的函数产生的是均匀分布,即 f(x=i)=1/5 , i=1,2,3,4,5。
假设随机变量x=rand5()*(rand5()-1)
则x的分布为
x 0 1 2 3 4 5 6 8 9 10 12 15 16 20
p 5/25 1/25 2/25 2/25 3/25 1/25 2/25 2/25 1/25 1/25 2/25 1/25 1/25 1/25
可以发现p=1/25的数有7个,其实只要有相同概率的数超过7个就行,记
A={1,5,9,10,15,16,20}
B={1,2,3,4,5,6,7}
做映射 f:A->B
f(Ai)=Bi
可以证明这样产生的随机数也是均匀分布的,用条件概率
p(x=i|x in A)=p(x=i)/p(x=i,x in A)=(1/25)/(1/25)=1/7
则易知rand7()可以如下表示
int rand7() { while(1) { int x=rand5()*(rand5()-1); switch(x) { case 1: return 1; case 5: return 2; case 9: return 3; case 10:return 4; case 15:return 5; case 16:return 6; case 20:return 7; } }}
- 给定RAND5,写出RAND7
- rand5 rand7
- 给定一个rand5的随机数,生成rand7的随机数
- 利用rand5构造rand7
- rand5()构造rand7()
- rand5()生成rand7()
- rand5()构造rand7()
- 两个rand5生成rand7
- rand5产生rand7
- 算法--rand5()产生rand7()
- rand5()产生rand7()
- 使用rand5()生成rand7()
- rand5()生成rand7()
- Rand5() to Rand7()
- rand5()生成rand7()
- rand5()产生rand7() 方法总结
- Moderate rand5()产生rand7() @CareerCup
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 适配器模式--设计模式
- 关于<不能成为专业软件测试人员的10大理由>的一些阐述
- lcs 最长公共子序列 O(nlogn)算法
- 关于我拍网的一次使用感受
- [sgu]185. Two shortest 网络流
- 给定RAND5,写出RAND7
- ubuntu下中文输入法的安装
- Android开发之自动完成
- 使用base64对图片的二进制进行编码,使其可以利用ajax进行显示
- linux命令
- C/C++取整函数ceil(),floor()
- 自定义 Yii CGridView Column 的显示
- 661 - Blowing Fuses
- 分屏查看文本文件:more和less