不均匀分布随机数产生均匀分布随机数
来源:互联网 发布:python黑帽子视频教程 编辑:程序博客网 时间:2024/04/28 01:01
http://hi.baidu.com/wxmsona/item/9a964b1d9110d911e3f986b5
有一个函数random(),该函数只能返回0或者1;
该函数以概率p返回1, 1-p的概率返回0.;
要求
1. 一个函数randomUpdate(),
2. randomUpdate()可以任意调用random()函数;
3.randomUpdate()函数只能返回1或者0,而且都是以0.5的概率返回;
第一次看可能真的很难有思路
首先想到的是任意数字的概率p,怎么组合p来得到0.5这个概率
p+p
p*p
p*p+p*p*p+p*p*p+....
求期望,方差,
利用数列等等
但是发现很难组合获得0.5这个结果。
仔细想想0.5概率返回1,0.5概率返回0
其实不需要想怎么去凑出这个0.5而是找一个两个独立互斥的(不记得概率了是不是这个术语)两个相等概率的就可以了。
那么例如
int r1 = random();
int r2 = random();
会出现如下面列表的结果
r1 r2 概率
1 1 p*p
1 0 p*(1-p)
0 1 (1-p)*p
0 0 (1-p)*(1-p)
由此可以见得就是出现1和0 以及 0和1两个结果是的独立的,等概率的
于是可以写randomUpdate函数了
int randomUpdate()
{
int r1 = -1;
int r2 = -1;
do{
r1 = random();
r2 = random();
if(( r1 == 0) && (r2 == 1)) return 1;
else if ((r1 == 1) && (r2 == 0) ) return 0;
}while( (r1 == 0 && r2 == 0) || (r1 ==1 && r2 == 1) );
return ERROR;
}
- 不均匀分布随机数产生均匀分布随机数
- 推导:通过均匀分布来产生任意分布随机数
- python随机数分布random均匀分布
- 均匀分布随机数产生的程序
- 数字信号产生之均匀分布的随机数
- C++中如何产生均匀分布的随机数
- 使用均匀分布随机数产生器构造任意分布的随机数产生器
- 产生高斯分布随机数
- 随机数与给定随机数生成器[0,m)产生另一个随机数生成器[0, n)(均匀分布)
- 产生a到b之间均匀分布的随机数
- 通过均匀分布随机数产生器获得一个高斯分布随机数产生器
- 数字信号产生之拉普拉斯分布的随机数
- 数字信号产生之瑞利分布的随机数
- 数字信号产生之艾尔朗分布的随机数
- 数字信号产生之贝努里分布的随机数
- 数字信号产生之韦伯分布的随机数
- 数字信号产生之贝努里高斯分布的随机数
- matlab产生莱斯分布随机数
- ExtAspNet控件库Grid控件相关属性
- 关于 python 字符编码的一些认识
- SQL Server DBCC命令
- windows Server 2003服务器上创建任务计划出现任务计划创建失败,显示密钥集不存在错误
- android平台修改默认语言的那点事
- 不均匀分布随机数产生均匀分布随机数
- 11-14笔记
- BIOS
- javaWeb中图片验证码的生成
- 文件的上传与下载--->张国亮总结心得第二季
- CSS框架960Grid
- Windows 服务(六)
- SQL Sever2008 中sa不能登录的解决方法(sa登录失败,错误18456)
- 怎样学习java