为什么此随机值的分布为 25/75 而不是 50/50?
编辑:所以基本上我试图写的是一个1位哈希。double
我想将 a 映射到或具有 50/50 的几率。为此,我编写了选择一些随机数的代码(仅作为一个例子,我想在具有规律性的数据上使用它,并且仍然得到50/50的结果),检查它们的最后一个位,如果它是1,或者它是0,则递增。double
true
false
y
n
但是,此代码不断导致 25% 和 75% 。为什么不是50/50?为什么会有这样一个奇怪但直截了当的(1/3)分布?y
n
public class DoubleToBoolean {
@Test
public void test() {
int y = 0;
int n = 0;
Random r = new Random();
for (int i = 0; i < 1000000; i++) {
double randomValue = r.nextDouble();
long lastBit = Double.doubleToLongBits(randomValue) & 1;
if (lastBit == 1) {
y++;
} else {
n++;
}
}
System.out.println(y + " " + n);
}
}
输出示例:
250167 749833