Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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中选择随机种子的跨平台方法是什么?_Java_Random_Cross Platform_Random Seed - Fatal编程技术网

Java中选择随机种子的跨平台方法是什么?

Java中选择随机种子的跨平台方法是什么?,java,random,cross-platform,random-seed,Java,Random,Cross Platform,Random Seed,读完这个答案后: 这让我想知道,如何在Java中随机挑选种子 不要说使用System.currentTimeMillis()或System.nanoTime()。阅读这篇文章,看看原因 这是一个很难回答的问题,但让我更难回答。假设您需要生成一个随机种子,而无需连接到internet,无需使用用户输入(即,没有gui),并且它必须是跨平台的(因此没有JNI来访问硬件) 是否有一些JVM变量可以作为随机性的来源进行监控 这能做到吗?还是不可能?看看(完全披露:我写的)。它可以解决Java中随机数的

读完这个答案后:

这让我想知道,如何在Java中随机挑选种子

不要说使用System.currentTimeMillis()或System.nanoTime()。阅读这篇文章,看看原因

这是一个很难回答的问题,但让我更难回答。假设您需要生成一个随机种子,而无需连接到internet,无需使用用户输入(即,没有gui),并且它必须是跨平台的(因此没有JNI来访问硬件)

是否有一些JVM变量可以作为随机性的来源进行监控

这能做到吗?还是不可能?

看看(完全披露:我写的)。它可以解决Java中随机数的大部分问题

甚至,如果您不使用它,您应该能够从它提供的各种实现中获得一些想法。基本上,它默认使用。如果不存在(例如Windows),它会尝试从下载数据或使用


我认为SecureRandom.generateSeed是不依赖任何特定平台或互联网的最佳选择。

System.currentTimeMillis()
与全局计数器相结合,每次生成种子时,该计数器都会递增。用于计数器,以便提高效率和线程安全性


“Combine”并不意味着“add”或“xor”,因为它太容易获得副本。取而代之的是散列。你可能会变得复杂,把long和计数器塞进例如16字节和MD5,但我可能会使用64位版本的Adler CRC或其他一些。嗯,那篇文章说32位种子不好,但64位种子好。System.currentTimeMillis()是一个64位种子。

哦,哇,你也有一个组合生成器!几天前我就写了一个这样的问题……我在我的另一个问题中添加了Uncommons数学:我希望您使用https连接到random.org。当前十六进制的currentTimeMillis()是:0x00 00 01 1C 9F B4 CF 78这看起来是一个非常好的64位数字吗?当然,您可以将其哈希为更好的64位数字,但您的源代码仍然小于64位。在我的应用程序中,我实际上需要超过700位的种子。