等概生成器

2020-07-05  本文已影响0人  7ccc099f4608

只有01生成器,如何生成 0-3等概率,如何生成 0-k等概率(模拟二进制)


  1. 给定: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,概率均为p^k(1-p),可以等概率输出。其余的都舍掉。

上一篇 下一篇

猜你喜欢

热点阅读