3
请考虑这一段代码:爪哇的范围随机相交:意想不到的结果
private static final Random RANDOM = new Random();
public static void main(String[] args) {
long distinct = IntStream.range(0, 600)
.map(i -> RANDOM.nextInt(600))
.distinct()
.count();
System.out.println("intersection %:" + (double) (600 - distinct)/600 * 100);
}
我的范围(0-600)600倍生成随机INT,天真地期待有0 %交集。实际结果是〜37%。
是否有计算交集概率的数学公式,具有随机整数范围和调用次数?在我的计算中,我不太相信这个经验性的37%
由于Java的Random具有均匀的分布,所以您应该预计交点在600中为1。 – Boschi
为什么你期望有0%的交集?如果你掷骰子6次,你是否期望每次掷出一次?我希望至少推出一些数字两次,有些数字根本没有。 – Socowi