请不要将此视为以下副本: How to generate random positive and negative numbers in java
我需要使用带有种子的随机数生成器。所以,我使用java.util.Random类和constructor来获取种子。
Random random = new Random(System.currentTimeMillis());
然后我使用了上面线程中给出的解决方案
int randomValue = random.nextInt(max - min + 1) + min;
然而,上述解决方案的问题是,如果min是一个较大的负数而max是一个较大的正数,那么则(max-min + 1)会导致溢出。
应该有一个更好的解决方案。任何人都可以指点我。
谢谢!
答案 0 :(得分:0)
如何使用BigInteger
来避免int
溢出。你也可以用
new BigInteger(int numBits, Random rnd)
使用随机位创建一些BigInteger
(最多为numBits
指定的位)。
所以只计算你需要多少位(range.bitLength()
可能有用)检查随机值是否在指定范围内,所以如果value再次大于范围random,如果一切正常,则返回随机值增加{ {1}}。
这是一些代码示例
min