我正在寻找一个随机数生成PHP解决方案,没有再次生成相同的数字..有什么解决办法吗?请告诉我..
我需要这个解决方案为我的项目之一,为网址生成唯一的关键字,我不想检查生成的数字是否存在或不从数据。
谢谢..
-编辑
我正在使用这个随机数生成方法,它的帮助是完全的吗?
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;
}发布于 2011-09-21 21:45:57
查看php函数uniqid():http://php.net/manual/en/function.uniqid.php
发布于 2011-09-21 21:51:22
生成一个唯一的随机数是不可能的--如果生成器依赖于状态,那么根据定义,输出不是随机的。
可以生成一组随机数并删除重复的数(尽管这些数再次不再是真正的随机数)。
你真的需要一个随机数,还是需要一个序列号或一个唯一的标识符--这是三件不同的事情。
为URL生成唯一键
MySQL和SQLite都支持自动增量列类型,这些列类型将是唯一的(实际上与序列号相同)。MySQL甚至有一种机制来确保对等节点的唯一性-即使它们不是紧密耦合的。Oracle提供了序列生成器。
MySQL和PHP都有生成uuids的内置功能,但由于大多数数据库管理系统都支持代理键生成,因此这种方法没有什么明显的好处。
发布于 2011-09-21 21:46:43
你可以使用一个数据库...每次出现随机数时,将其放入数据库中,下次,将新脚本的随机数与数据库中已有的随机数进行比较。
https://stackoverflow.com/questions/7500744
复制相似问题