Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法获取大于system.currentTimeInMillis值的rand值_Java_Random - Fatal编程技术网

Java 方法获取大于system.currentTimeInMillis值的rand值

Java 方法获取大于system.currentTimeInMillis值的rand值,java,random,Java,Random,如何生成大于System.currentTimeInMillis()值的随机值。我使用的是随机对象。如何获得最小范围为系统的值。currentTimeInMillis()?没有 long value = System.currentTimeMillis() + (long)random.nextInt(range); 工作 如果要强制执行严格大于System.currentTimeMillis()的值,请向其添加额外的1。相应地设置范围以防止溢出(请参见assylias的注释) 根据注释进行编

如何生成大于System.currentTimeInMillis()值的随机值。我使用的是
随机
对象。如何获得最小范围为
系统的值。currentTimeInMillis()

没有

long value = System.currentTimeMillis() + (long)random.nextInt(range);
工作

如果要强制执行严格大于
System.currentTimeMillis()
的值,请向其添加额外的1。相应地设置范围以防止溢出(请参见
assylias
的注释)


根据注释进行编辑。

如果您希望能够获得分布在整个范围内的数字,这是一种方法。
System.currentTimeMillis()…Long.MAX_VALUE

long millis = System.currentTimeMillis();    
long l = Math.min(Long.MAX_VALUE - millis, Math.abs(random.nextLong())) + millis;

Long.MAX_值将比此处的其他结果更常见,但如果这很重要。

对于
currentTimeMillis
Long.MAX_值
之间的时间均匀分布,您可以使用:

long time = System.currentTimeMillis();
long randomFutureTime = Math.abs(random.nextLong()) % (Long.MAX_VALUE - time) + time;

这对于具有对象创建的实时性可能很有用,并且两个对象不能具有相同的时间戳,因此您可以对它们进行排序

我将其用作对象的UUID:

Const.DECAL_BIT = 20;
Const.DECAL_BIT_MASQUE = (Long.size() -1) -  next 20;

private final Long timeCreate = (System.currentTimeMillis() << Const.DECAL_BIT) 
       + (System.nanoTime() & Const.DECAL_BIT_MASQUE);
Const.deal_位=20;
Const.deal\u BIT\u MASQUE=(Long.size()-1)-下一个20;

private final Long-timeCreate=(System.currentTimeMillis()>Const.贴花位)

获取一个随机值。。。将当前时间(毫秒)添加到它。。。执行方法
System.currentTimeInMillis()
不存在。你从哪儿弄来的?它应该是
System.currentTimeMillis()
。@EEP可能的溢出使它更复杂一些。nextInt()可以是任何
int
值(正、负或零),也许你的意思是
nextInt(范围)+1
随机。nextInt()可以生成0值。如何排除0值?除非定义
range
,这仍然会溢出。检查溢出有点偏执,除非你担心一个292278994年的错误我怀疑Java到那时会死。永远不要少
Math.min(Long.MAX\u VALUE,x)
没有任何作用,而且总是
x
@PeterLawrey Yes同意-老实说,我不确定该评论的答案是哪个版本;-)