gpt4 book ai didi

java - Math.随机范围负数

转载 作者:行者123 更新时间:2023-11-30 02:13:04 25 4
gpt4 key购买 nike

如果我这样做:Math.random() * 4-2

这会给我一个 (-2,2) 范围,2 是互斥的吗?我认为这是正确的,但我很少得到正数(是的,我知道这是一个随机算法,我们必须无限地随机生成它感觉,但我只是想确定)

新问题

如果我想要从 -1 到 1 的所有随机有理数(包括两个边界),这条线可以工作:Math.random() * 2.0000000000000001 - 1;

我查了一下,小数点后的 double 可以存储大约 52 位,这大约是 16 位数字,大约是这一点之后 0 的数量。

我正在从事的项目是使用蒙特卡罗模拟来估计 pi ​​的位数,如果您对此有所了解,那么也许您会明白为什么我要问所有这些问题。

最佳答案

Would this get me a range of (-2,2), 2 being exclusive?

是的,Math.random() * 4-2 为您提供了 -2 到 1 范围内的 4 种可能性。

您将需要更多运行来检查分布..

int[] occ = new int[4];
for(int x=0; x<1000000; x++){
int rand = (int)(Math.random() * 4)-2;
occ[rand+2] ++;
}

System.out.println("Occurrences for -2: " + occ[0]/10000.0 + "%");
System.out.println("Occurrences for -1: " + occ[1]/10000.0 + "%");
System.out.println("Occurrences for 0: " + occ[2]/10000.0 + "%");
System.out.println("Occurrences for 1: " + occ[3]/10000.0 + "%");

100 万次运行的测试表明随机数分布得很好:

Occurrences for -2: 24.9779%
Occurrences for -1: 25.0338%
Occurrences for 0: 24.971%
Occurrences for 1: 25.0173%

关于java - Math.随机范围负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49545484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com