gpt4 book ai didi

c# - 生成唯一随机数的聪明方法

转载 作者:IT王子 更新时间:2023-10-29 04:15:44 26 4
gpt4 key购买 nike

我想生成一个范围在 00000001 到 99999999 之间的唯一随机数序列。

所以第一个可能是 00001010,第二个可能是 40002928 等等

最简单的方法是生成一个随机数并将其存储在数据库中,然后每次都重复此操作并在数据库中检查该数字是否已存在,如果存在,则生成一个新的,再次检查,等等.但这看起来不对,如果生成的项目数量变大,我可能会重新生成一个数字可能 100 次。

有没有更聪明的方法?

编辑因为我总是忘记说为什么我想要这个,它可能会让事情变得更清楚,也许还有一个替代方案,它是:我们想为预订生成一个订单号,所以我们可以只使用 000001、000002 等。但是我们不想让竞争对手知道创建了多少订单(因为这不是一个高容量市场,而且我们不'想让他们知道我们是在 2 个月后的第 30 个订单还是第 100 个订单。所以我们想要一个随机的(但唯一的)订单号

最佳答案

您可以使用线性同余发生器 (LCG) 或线性反馈移位寄存器 (LFSR)。谷歌或维基百科了解更多信息。

两者都可以使用正确的参数在“完整周期”(或“完整周期”)的基础上运行,这样它们将在一个周期内仅生成一次“伪随机数”,并生成所有数字范围内。两者都是“弱”生成器,因此对密码学没有好处,但对于明显的随机性来说可能“足够好”。您可能必须将周期限制在您的“十进制”最大值内,因为“二进制”周期是必要的。

更新:我应该补充一点,没有必要以任何方式预先计算或预先存储以前的值,您只需要保留以前的种子值(单个整数)并计算下一个“按需”序列中的编号。当然,如果需要,您可以将一系列预先计算的数字保存到您的数据库中,但这不是必需的。

关于c# - 生成唯一随机数的聪明方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com