首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不再生成随机数

不再生成随机数
EN

Stack Overflow用户
提问于 2011-09-21 21:40:37
回答 6查看 2K关注 0票数 0

我正在寻找一个随机数生成PHP解决方案,没有再次生成相同的数字..有什么解决办法吗?请告诉我..

我需要这个解决方案为我的项目之一,为网址生成唯一的关键字,我不想检查生成的数字是否存在或不从数据。

谢谢..

-编辑

我正在使用这个随机数生成方法,它的帮助是完全的吗?

代码语言:javascript
复制
function randomString($length = 10, $chars = '1234567890') {

// Alpha lowercase
if ($chars == 'alphalower') {
    $chars = 'abcdefghijklmnopqrstuvwxyz';
}

// Numeric
if ($chars == 'numeric') {
    $chars = '1234567890';
}

// Alpha Numeric
if ($chars == 'alphanumeric') {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
}

// Hex
if ($chars == 'hex') {
    $chars = 'ABCDEF1234567890';
}

$charLength = strlen($chars)-1;

for($i = 0 ; $i < $length ; $i++)
    {
        $randomString .= $chars[mt_rand(0,$charLength)];
    }

return $randomString;
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-21 21:45:57

票数 4
EN

Stack Overflow用户

发布于 2011-09-21 21:51:22

生成一个唯一的随机数是不可能的--如果生成器依赖于状态,那么根据定义,输出不是随机的。

可以生成一组随机数并删除重复的数(尽管这些数再次不再是真正的随机数)。

你真的需要一个随机数,还是需要一个序列号或一个唯一的标识符--这是三件不同的事情。

为URL生成唯一键

MySQL和SQLite都支持自动增量列类型,这些列类型将是唯一的(实际上与序列号相同)。MySQL甚至有一种机制来确保对等节点的唯一性-即使它们不是紧密耦合的。Oracle提供了序列生成器。

MySQL和PHP都有生成uuids的内置功能,但由于大多数数据库管理系统都支持代理键生成,因此这种方法没有什么明显的好处。

票数 2
EN

Stack Overflow用户

发布于 2011-09-21 21:46:43

你可以使用一个数据库...每次出现随机数时,将其放入数据库中,下次,将新脚本的随机数与数据库中已有的随机数进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7500744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档