草庐IT

nextLong

全部标签

java - 为什么 Random.nextLong 不在 Java 中生成所有可能的 long 值?

Random类的nextLong()方法的Javadoc指出BecauseclassRandomusesaseedwithonly48bits,thisalgorithmwillnotreturnallpossiblelongvalues.(Randomjavadoc)实现是:return((long)next(32)我的看法如下:要创建任何可能的long,我们应该以相等的可能性生成任何可能的64位位模式。假设对next(int)的调用给了我们32个随机位,那么这些位的串联将是一个64个随机位的序列,因此我们以相等的可能性生成每个64位模式。因此所有可能的长值。我想编写javadoc的

Java:0 <= x < n 范围内的随机长数

Random类具有在给定范围内生成随机int的方法。例如:Randomr=newRandom();intx=r.nextInt(100);这将生成一个大于或等于0且小于100的int数。我想对long数做同样的事情。longy=magicRandomLongGenerator(100);Random类只有nextLong(),但它不允许设置范围。 最佳答案 从Java7(或AndroidAPILevel21=5.0+)开始,您可以直接使用ThreadLocalRandom.current().nextLong(n)(对于0≤xThr

Java:0 <= x < n 范围内的随机长数

Random类具有在给定范围内生成随机int的方法。例如:Randomr=newRandom();intx=r.nextInt(100);这将生成一个大于或等于0且小于100的int数。我想对long数做同样的事情。longy=magicRandomLongGenerator(100);Random类只有nextLong(),但它不允许设置范围。 最佳答案 从Java7(或AndroidAPILevel21=5.0+)开始,您可以直接使用ThreadLocalRandom.current().nextLong(n)(对于0≤xThr