只调用random(0, 1),实现random(a, b)
来源:互联网 发布:双网卡双网络设置 编辑:程序博客网 时间:2024/05/21 23:55
只调用random(0, 1),实现random(a, b)?
random(0, 1),50%为0,50%为1
random(a, b),b-a+1个数,调用random(0,1)后采取某种方法得到a~b之间。
2^n = m < b-a+1,bit表示此二进制值的位数
思路:找到包含b-a+1范围的二进制数,random(0,1)求和,相当于二进制的每一位都是等概率的值,结果也是等概率???求证明。
while( value < b - a + 1)
{
bit++;
value = value << 1;
}
result = 0;
for(i=0; i < bit; i++)
{
k = random(0, 1);
result = result + k;
当i=bit-1,即达到bit位时,查看此时reuslt是否在范围内
if ( result> a && result < b)
return result; // 此时的结果为random(a,b)等概率的值
else
i = 0; // 重新开始循环,
}
0 0
- 只调用random(0, 1),实现random(a, b)
- 用Random(0,1)来实现Random(a,b)
- java 使用Random(0,1)实现Random(a,b) 以及 random.nextInt()不随机性
- 【算法导论学习-009】仅使用Random(0,1)实现Random(a,b)
- 关于调用RANDOM(0,1)产生0和1的几率都为1/2,实现RANDOM(a,b)的过程
- RANDOM(a, b)过程的一种实现
- Random(a,b)问题;
- int Random (int a, int b)
- random
- Random();
- random
- Random
- Random
- random
- Random
- Random
- Random
- Random
- 推荐常用JavaScript函数
- python __getattr__和__getattribute__
- Android按钮单击事件的四种常用写法总结
- 基于sqlite3的利用数据库实现简单通讯录
- 【51nod 1028 大数乘法 V2】
- 只调用random(0, 1),实现random(a, b)
- 利用C语言实现一些简单的栈操作
- javascript:;与javascript:void(0)使用介绍
- 安卓开发 listviev异步加载网络图片
- Qt中使用mysql连接远程服务器
- C语言一维数组的定义和引用
- Linux 方法 解决 总结 undefined reference
- 【PAT甲级】1063. Set Similarity (25)
- Spring实现AOP的4种方式