【发布时间】:2011-04-07 07:44:16
【问题描述】:
我想生成一个 00000001 到 99999999 范围内的唯一随机数序列。
所以第一个可能是 00001010,第二个可能是 40002928 等等。
简单的方法是生成一个随机数并将其存储在数据库中,下次再做一次,如果该数字已经存在,则检查数据库,如果存在,则生成一个新的,再次检查,等等. 但这看起来不对,如果生成的项目数量变大,我可能会重新生成一个数字可能 100 次。
有没有更聪明的方法?
编辑 一直以来我都忘了说为什么我想要这个,它可能会让事情变得更清楚,也许会得到一个替代方案,它是: 我们想为预订生成一个订单号,所以我们可以只使用 000001、000002 等。但我们不想让竞争对手知道创建了多少订单(因为它不是一个大容量市场,我们不'不希望他们知道我们是在 2 个月后订购 30 还是订购 100。所以我们希望有一个随机的订单号(但唯一)
【问题讨论】:
-
为什么你需要一个约束集中的唯一数字?
-
独特而随机。随着新数字的产生,这变得越来越随机。
-
@Pierre-Alain Vigeant:您是说硬币的随机性不如例如硬币那么随机。骰子,因为它可能的结果更少?
-
@Lazarus:如果你能在电子或量子噪声中找到一种模式,那么你就是那个人。
-
@0xA3,如果你消除所有出现的值,硬币只会随机一次。