只有01生成器,如何生成 0-3等概率,如何生成 0-k等概率(模拟二进制)
- 给定:0/1生成器 A,生成0的概率为p,生成1的概率为1-p
等概生成{0,1}
两次调用 A,则
生成数值 | 概率 |
---|---|
00 | p*p |
01 | p*(1-p) |
10 | (1-p)*p |
11 | (1-p)*(1-p) |
可以发现生成"01" 和"10" 的概率均相等。
Thus,
生成数值 | 概率 | 操作 |
---|---|---|
00 | p*p | 重新调用 |
01 | p*(1-p) | 取值“0” |
10 | (1-p)*p | 取值“1” |
11 | (1-p)*(1-p) | 重新调用 |
code
来源:https://blog.csdn.net/u013146882/java/article/details/77684720
int generate_0_1(){
int i=RAND();
int j=RAND();
int result;
if(i==0 && j==1){
return=0;
}else if(i==1 && j==0){
return=1;
}else
return generate_0_1();
}
等概生成 {0, 1, 2, ... , k}
推广到k个数的情况,生成的00…001对应0,00…010对应1,00…100对应2,……,01…000对应k-1,10…000对应k,概率均为,可以等概率输出。其余的都舍掉。
网友评论