gpt4 book ai didi

php - 生成随机数的算法

转载 作者:可可西里 更新时间:2023-11-01 06:30:57 25 4
gpt4 key购买 nike

我希望生成一个随机数并将其发送到数据库中特定 user_id 的表中。问题是,同一个号码不能使用两次。有上百万种方法可以做到这一点,但我希望非常热衷于算法的人有一种聪明的方法来以优雅的解决方案解决问题,因为满足以下条件:

1) 对数据库的查询量最少。2) 对内存中的数据结构进行最少的爬行。

基本上这个想法是做以下事情

1) 创建一个从0到9999999的随机数
2)查询数据库,看号码是否存在
或者
2) 查询数据库中的所有号码
3) 查看返回的结果是否匹配来自数据库的任何内容
4)如果匹配,重复步骤1,如果不匹配,问题解决。

谢谢。

最佳答案

不,您的算法不可扩展。我之前所做的是连续发布数字(每次 +1),然后通过异或运算将它们传递给混杂位,从而给我一个看似随机的数字。当然它们并不是真正随机的,但在用户眼中它们看起来是随机的。


[编辑]附加信息

这个算法的逻辑是这样的,你使用一个已知的序列来生成唯一的数字,然后你确定地操纵它们,所以他们看起来不再是连续的了。一般的解决方案是使用某种形式的加密,在我的例子中是一个 XOR 触发器,因为它尽可能快,并且它满足了数字的保证永远不会碰撞。

然而,如果你想要更喜欢,你可以使用其他形式的加密随机查找数字,速度过快(比如你不需要生成很多id)。现在选择加密算法的重点是“数字永远不会碰撞的保证”。以及一种证明加密算法是否可以实现的方法此保证是检查原始数字和结果是否加密具有相同的位数,并且算法是可逆(双射)。

[感谢 Adam LissCesarB 对解决方案的扩展]

关于php - 生成随机数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319524/

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