PHP永不重复的随机数

标签 php mysql random numbers

<分区>

我需要为网站上的每个用户创建一个完全随机的数字,并将其插入 MySQL 数据库中。数字永远不会重复,我不想使用 MySQL AutoIncrement,因为我需要一个特定的范围。比如说从 111,111999,999,999,999。目前没有更高或更低。如果你想知道的话,我确实有这个范围的具体原因。我知道我可以在 MySQL 上使用 unique 功能,但这只会阻止我插入重复项。我正在考虑使用 2 个函数,一个用于生成数字,另一个用于检查是否使用了该数字。他们会一直循环,直到找到一个未使用的数字。我知道那是多么低效,一旦这些数字中的大部分被采用可能需要多长时间,所以这就是我来这里寻求更好答案的原因。你建议我做什么,因为我完全没有想法。感谢您的帮助!

最佳答案

你知道你可以:

ALTER TABLE `mytable` AUTO_INCREMENT=111111

对吧?

无论如何,如果您仍然执着于随机性,最有效的方法可能是SELECT 所有现有值,将它们加载到 PHP 数组中,然后让 PHP 调用 rand(111111, 999999999999) 直到你得到一个不在 in_array 中的数字。

旁注:除非是 64 位版本,否则 PHP 无法处理 999,999,999,999,因为该数字对于 32 位版本来说太高了。

关于PHP永不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183820/

相关文章:

php - 如何在不知道其名称的情况下访问 JSON 对象(并且不在数组中)

php - MySQL: from_unixtime: 访问被拒绝

python-3.x - python中的随机函数在圆内生成随机对

android - 从图库中查找随机图片

php - 使用 PHP 从 MySQL 动态选择多个下拉选项

php - Nginx 将参数传递给 PHP 文件

mysql - 如果第 3 个表没有该值,则连接 3 个表

php - Mysql PDO 获取时的最大 LONGBLOB 数据长度

java - 多次随机移动图像

php - 我可以在 PHP 中混合使用 MySQL API 吗?