Random 如何随机生成40位唯一值?

Random 如何随机生成40位唯一值?,random,unique,Random,Unique,我想生成40位的值,这些值是唯一的,不容易猜测 我怎么做?有什么建议吗 -编辑- 我对算法感兴趣,C#或Java将是最重要的 -编辑2- 我可以存储以前的值,但我不希望每次生成新数字时都要检查整个列表usign what?一般来说,random=unqiue,所以使用random。或 日期| md5sum |截止日期-b 4-9 诸如此类的事你在哪个站台上?在unix ish系统上,只需从/dev/random(如果没有足够的熵,则会阻塞)或/dev/urandom(如果熵有限,则不会阻塞,但也

我想生成40位的值,这些值是唯一的,不容易猜测

我怎么做?有什么建议吗

-编辑-
我对算法感兴趣,C#或Java将是最重要的

-编辑2-

我可以存储以前的值,但我不希望每次生成新数字时都要检查整个列表

usign what?一般来说,random=unqiue,所以使用random。或

日期| md5sum |截止日期-b 4-9


诸如此类的事

你在哪个站台上?在unix ish系统上,只需从/dev/random(如果没有足够的熵,则会阻塞)或/dev/urandom(如果熵有限,则不会阻塞,但也会生成质量较低的随机数)中读取40位。

从ur程序的第一个版本(将是唯一的部分)开始,每天获取第一个12位(最多4095位),随机系统调用/函数的其他38位使用。 因此,您必须重新检查最后一天的唯一值。 抱歉,无法从不可预测(随机)值授予唯一

您可以从日期开始使用更多部件,例如,最长可达秒。你可以改变可预测的(日期)位,但这会增加安全性

无论如何,你必须在独特的检查时间/随机质量之间取得平衡。为了提高检查速度,可以使用二叉树或其他技术


此外,您还可以使用高达毫秒的计时器值。。对于繁忙的系统,它将是唯一的(如果执行线程锁定+50ms睡眠),并且在多线程环境中不可预测。

您最喜欢的编程语言是什么?C#还是Java,但任何语言的算法都可以!这不是随机的。这实际上是高度可预测的。而且,随机并不意味着唯一。通过抛硬币完全可以随机产生500万个“人头”。随机的对可能吗?不,同意Marc B的观点,如果我试图在不到一秒钟的时间内生成数字(我会得到重复的数字),这也是问题在原始状态下唯一可能的答案;)是的,他们会的。Windows内置了自己的随机数生成器,尽管我能想到的在PHP中访问它们的唯一方法是通过会话名称子系统:。也许你可以打个电话或者做点什么。