问题
从0、1不等概率随机到0、1等概率随机:即给定一个方法f,该方法能够不等概率的返回0和1,要求不用其他随机方法只能用f方法,使得等概率返0和1
解答
解题思路
由于f方法返回0的概率加上返回1的概率一定会1,这个时候可以定义一个方法f2,该方法内部调用分别两次f方法,,假设两次拿到的结果分别是x和y,如果x=0,y=1,则f2方法返回0;如果x=1,y=0,则f2方法返回1;否则重新调用f方法。
代码示例
public class RandomDifferentToSame {
public static int f() {
return Math.random() < 0.85 ? 0 : 1;
}
public static int f2() {
int num1 = f();
int num2 = f();
while (num1 == num2) {
num1 = f();
num2 = f();
}
return num1 == 0 && num2 == 1 ? 0 : 1;
}
public static void main(String[] args) {
int maxTimes = 10000000;
int[] arr = new int[2];
for (int i = 0; i < maxTimes; i++) {
int num = f2();
arr[num]++;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(i + "出现了" + arr[i] + "次");
}
}
}
运行结果为
0出现了5000744次
1出现了4999256次
10 条评论
作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
?议论文评语?
哈哈哈,写的太好了https://www.lawjida.com/
《古墓兽影》动作片高清在线免费观看:https://www.jgz518.com/xingkong/93823.html
你的文章让我感受到了艺术的魅力,谢谢! http://www.55baobei.com/wj1hzn39vi.html
你的文章让我心情愉悦,真是太棒了! https://www.4006400989.com/qyvideo/48573.html
你的文章让我感受到了不一样的风景,谢谢分享。 http://www.55baobei.com/quAZql5sec.html
文章的确不错啊https://www.cscnn.com/
不错不错,我喜欢看 https://www.ea55.com/
博主真是太厉害了!!!