我需要生成0(包括)到n(不包括)范围内的任意大的随机整数.我最初的想法是调用nextDouble并乘以n,但是一旦n大于2 53,结果将不再均匀分布.
BigInteger 有以下构造函数可用:
public BigInteger(int numBits, Random rnd)
Run Code Online (Sandbox Code Playgroud)
构造一个随机生成的BigInteger,均匀分布在0到(2 numBits - 1)的范围内,包括0和(2 numBits - 1).
如何使用它来获得0到n范围内的随机值,其中n不是2的幂?
我们如何在java中生成非常大的随机数?我说的是10000个数字?我知道我们必须使用BigInteger,但我们怎么做呢?做这样的事最有效的方法是什么?请提供一个小例子.谢谢.
我是Java编程的新手。我正在计算特定距离内的行驶速度,但是当达到万亿时,我不确定该怎么做。
我已经尝试过将'L'放在值的最后一部分,但是,我还记得长数据类型限制为4万亿,所以我得到了这个错误:
错误:(22、58)Java:非法字符:'\ u202c'
double speed = 299792;
long distance= 41320000000000?L;
long temp = distance/speed;
Run Code Online (Sandbox Code Playgroud)
我期望结果是137828894.70。但是我只会得到错误。从昨天开始,我一直在寻找答案,但是对此我没有任何解决方案。
编辑
我能够解决问题,谢谢大家的帮助!我的代码现在可以正常工作,如下所示:
BigDecimal distance= new BigDecimal("41320000000000");
BigDecimal speed = new BigDecimal("299792");
BigDecimal travelSpeed = distance.divide(speed, BigDecimal.ROUND_HALF_UP);
Run Code Online (Sandbox Code Playgroud)