我正在寻找一个快速的PRNG,这样我就可以为对象快速创建(半)唯一的ID。这种独特性更多的是一个管理问题,而ID复制只是在极其罕见的情况下才是一个问题。
它必须尽可能快,因为性能是关键的,而且是不连续的(如果is是顺序的,那么它更有可能发生在管理端的错误)。另外,我希望避免较低的数字,但只要重新尝试,直到检索到足够高的数字,就可以很容易地缓解这一问题。
编辑我还应该补充说,我需要ID是32位,因此GUID不工作,需要平台独立(目前正在PC上实现,但也需要工作在任天堂DS,PSP,PS3,Wii,Xbox和其他平台)。而且,它可能被称为每秒数千次,因此,基于输入的随机数生成是不可行的。
谢谢
发布于 2009-08-12 14:09:46
这样做可能会奏效:
自时代以来的当前时间之和,线程id和一个序列号。
发布于 2009-08-12 13:51:55
GUID?许多环境都支持生成这些环境。
发布于 2009-08-12 14:00:25
我不确定我是否正确,但是如果您在Linux机器上,可以从/dev/urandom中读取以获得高质量的随机数流。这些数字可用于生成所需的任意长度字符串。请记住,要使此解决方案正常工作,机器应接收用户(键盘/鼠标)的输入。
https://stackoverflow.com/questions/1266261
复制相似问题