【发布时间】:2010-09-24 02:06:20
【问题描述】:
我正在寻找生成一个随机数并将其发布到数据库中特定 user_id 的表中。问题是,同一个号码不能使用两次。有上百万种方法可以做到这一点,但我希望非常热衷于算法的人能够以一种优雅的解决方案巧妙地解决问题,因为它满足以下标准:
1) 对数据库进行的查询最少。 2) 对内存中的数据结构进行最少的爬取。
基本上这个想法是做以下事情
1) 创建一个从 0 到 9999999 的随机数
2)检查数据库,看号码是否存在
或
2) 查询数据库中的所有号码
3) 查看返回的结果是否与来自 db
的结果匹配
4)如果匹配,重复步骤1,如果不匹配,问题解决。
谢谢。
【问题讨论】:
-
我不得不 -1 因为这个问题背后的逻辑是有缺陷的。
-
能否补充一下为什么您不想使用简单的自动增量字段?
-
我不知道这是随机的还是唯一且非连续的。我无法弄清楚 user_id 与任何事情有什么关系。而且我不知道 9,999,999 与任何事情有什么关系。
-
有两件事你应该'永远'不做:尝试生成你自己的随机号码或'发明'你自己的加密。 100 次中有 99 次是有缺陷的。
标签: php mysql algorithm random pseudocode