php中使用uniqid mt_rand 生成随机不重复字符串的方法

方法一:

<?PHP
     $str = uniqid(mt_rand(),1);
     echo 'sha1: ',sha1($str);
     echo '<br>';
     echo 'MD5: ',md5($str);

采用uniqid函数,配合mt_rand随机函数,最后使用散列值得出最终唯一值。

但是通过测试中,发现随机数的唯一性有些相同部分,大概有11位相同的(但无大碍)

 

第二种方法:GUID

<?PHP

 

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

 

 ?>

例子3

<?php
//使用uniqid mt_rand 生成随机不重复字符串的方法
$snKeys=array();
$total=10;//设置生成数量
$prefix='code';//字符串前缀
while(count($snKeys) < $total) {
     $snKeys[$prefix . md5(uniqid(mt_rand(), true))] = null;
}
print_r($snKeys);

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
mt rand 不重复随机数、uniqid rand、随机函数rand、c语言随机函数rand、rand生成随机数的范围,以便于您获取更多的相关知识。

时间: 2024-09-16 17:43:30

php中使用uniqid mt_rand 生成随机不重复字符串的方法的相关文章

在Excel 2007中如何简单地生成随机数据呢?

  在Excel 2007中用函数轻松生成随机数据 这个函数就是 RandBetwween(bottom,top),表示生成从bottom到top之间的随机整数. 我们在Excel工作表的单元格中输入"=RandBetwween(10,100)"(不包括引号). 图示:Excel会自动给出提示 回车,这个单元格中就出现了一个10到100之间的随机数. 再使用Excel神奇的填充柄(将鼠标移动到单元格的右下角,当出现十字标志时,按下鼠标左键,向需要的方向拖动鼠标),轻松得到更多的指定范围

Java 中实现随机无重复数字的方法_java

一般有点开发经验的朋友都能实现这样的功能,只不过是效率上的问题.我们一般在面对这样的问题时,总会平铺直序的联想到,先生成一个数组,然后在一个循环中向数组中添加随机数字,在添加数字的过程中先查找一下数组中是否存在这个数字,如果不存在这个数字就直接添加到数组中:如果存在这个数字就不添 加.我们一般都是这样考虑问题的,这样考虑也能实现功能,我刚才也说了,只不过是效率上的问题. 为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元

Delphi中根据分类数据生成树形结构的最优方法

一. 引言: TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能,因而受到广大程序员的青睐. 树形结构在Windows环境中被普遍应用,但在数据库开发中面对层次多.结构复杂的数据,如何快速构造树形目录并实现导航呢? 二. 实现关键技术: 在Delphi提供的控件中包含了TreeView控件,但树的具体形成还需要用户编写代码.即它的列表项要在程序中动态添加,而这些列表数

Python中还原JavaScript的escape函数编码后字符串的方法_python

遇到一个问题需要用Python把JavaScript中escape的中文给还原,但找了大半天,也没有找到答案,只好自己深入研究解决方案. 我们先来看在js中escape一段文字的编码 复制代码 代码如下: a = escape('这是一串文字'); alert(a); 输出: 复制代码 代码如下: %u8FD9%u662F%u4E00%u4E32%u6587%u5B57 咋一看,就感觉有点类似json格式,我们来看看标准的json格式编码同样的汉子"这是一串文字" 复制代码 代码如下:

java 生成随机的6位字符 包括a-z A-Z 0-9

问题描述 java 生成随机的6位字符 包括a-z A-Z 0-9 java 生成随机的6位字符 包括a-z A-Z 0-9 解决方案 public static void main(String[] args) { String a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] rands = new char[6]; for (int i = 0; i < rands.le

PostgreSQL 中生成随机汉字

标签 PostgreSQL , 字符集 , 汉字编码 , 随机汉字 , chr , ascii , unicode 背景 汉字unicode编码范围 php中utf-8编码下用正则表达式匹配汉字的最终正确表达式 -- /[\x{4e00}-\x{9fa5}]/u \u4e00-\u9fa5 (中文) \x3130-\x318F (韩文) \xAC00-\xD7A3 (韩文) \u0800-\u4e00 (日文) 4e00 对应 19968 9fa5 对应 40869 一共 20901 个汉字 例

如何使用Visual Studio 2010在数据库中生成随机测试数据_MsSql

测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数据库进行多种测试,其中一个很好用的功能是能为开发者在测试阶段,大量方便地为数据库生成随机的数据,而且还可以自己指定生成数据的规则,十分方便,这就让在测试过程中,开发者能有更充足的数据样本对项目进行测试.本文则介绍其中的Data Generation数据生成器的使用方法. 1 创建SQL Server

如何使用Visual Studio 2010在数据库中生成随机测试数据

测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数据库进行多种测试,其中一个很好用的功能是能为开发者在测试阶段,大量方便地为数据库生成随机的数据,而且还可以自己指定生成数据的规则,十分方便,这就让在测试过程中,开发者能有更充足的数据样本对项目进行测试.本文则介绍其中的Data Generation数据生成器的使用方法. 1 创建SQL Server

php中利用uniqid() 函数生成唯一的id

function createId($prefix = "") { $str = md5(uniqid(mt_rand(), true)); return $prefix . $str; } // uniqid(prefix,more_entropy) uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.   prefix 可选.为 ID 规定前缀.如果两个脚本恰好在相同的微秒生成 ID,该参数很有用. more_entropy 可选.规定位于返回值末尾的更多的熵.