自己写的,不清楚对不对,仅供参考,应该还可以优化,有更好的办法,希望大家留言,谢谢
思路:
第一次返回0,第二次返回1的概率是p*(1-p)
第一次返回1,第二次返回0的概率是(1-p)*p
00概率是p平方;11概率是(1-p)平方 ,这两种情况导致概率偏差舍弃.
代码如下:
给定的函数方法:index>n; 概率根据n的数字确定;
//假设给定的函数 public static int generateZeroAndOne() { int index=new Random().nextInt(10); if(index>3) { return 0; } return 1; }
下面是调整概率的代码:
public static int rate() {
int b1=generateZeroAndOne(); int b2=generateZeroAndOne(); if (b1==0&&b2==1) { return 0; } else if(b1==1&&b2==0) { return 1; } return rate(); }