【发布时间】:2012-02-14 18:02:32
【问题描述】:
例如,如果 java 产生伪随机序列:9 3 2 5 6 通过使用 23 作为种子,我该如何做相反的事情?即从 9 3 2 5 6 序列中取出 23。
或者我如何为某个序列分配种子?
如果有数据库,这很容易做到——只需为序列分配一个随机键
INSERT INTO SEQUENCE_TABLE VALUES (RANDOM_KEY, SEQUENCE)
但是,如果我不被允许使用数据库,有没有公式可以做这样的事情?
【问题讨论】:
-
据我所知,不可能从输出中确定种子,除非事先有每个可能的种子/序列对的查找表。你的用例是什么?可能有比尝试对 Java 的 PRNG 进行逆向工程更优雅的解决方案。
-
我只需要为一系列唯一数字分配一个键,但键也必须很短。密钥只是作为表示序列的一种简短方式,就像java中的种子表示一个伪随机数序列
-
我只是想使用 Java 的种子和随机函数来重新生成我的唯一数字序列。如果有更简单的方法希望您能提出建议并感谢您。
-
我不确定您究竟想在这里实现什么。你能详细说明你的问题吗?您将收到哪些投入,您需要生产什么?
-
您将: (1) 根据 RNG 算法的 req 生成种子。 (2) 将该种子与序列(或包括起始位置的数字子序列)一起保存在数据库中; (3) 通过重新播种相同的值来按需复制流。如果您尝试对 RNG 输出进行逆向工程,请参阅下面的答案。
标签: java random random-seed