网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 案例分享 > 有哪些能够生成随机不重复字符串的算法或者函数?
admin 案例分享 2023-06-21 19:31:56

有哪些能够生成随机不重复字符串的算法或者函数?

有哪些能够生成随机不重复字符串的算法或者函数?,第1张

有哪些能够生成随机不重复字符串的算法或者函数?,第2张

有哪些能够生成随机不重复字符串的算法或者函数?最好是 PHP 中的~~

长度最好是在十来位以内啊~~ 附加个具体点的条件,应该尽量在 10 来位以内吧,然后最重要的是不重复,随机的只要看起来找不到规律就行。做那种类似优惠券的编码的~ ----------------------- 以下是精选回复-----------------------

答:md5(time())算不算,但是不能保证永不重复,只能说重复的概率非常小
答:之前看 tomcat 生产 sessionId 的时候用了函数查看是否重复,没有重复才返回
答:不说长度要求的 都是耍流氓
答:#!/bin/bash
echo $RANDOM
答:严格意义上讲生成一个「随机」且「不重复」的字符串是不可能的 ... 因为随机和唯一是互斥的两个条件 ...

生成不重复的字符串必须遵循一定规则 ... 这就不随机 ... 反之则一定存在碰撞概率 ... 只是这个概率或大或小而已 ...

所以对于标题的问题 ... 答案是一个都没有 ...

但如果你要的是一个「看似随机」且「没有那么容易重复」的方法的话 ... 那倒是有不少 ...

比如我个人常用的 uniqid( mt_rand( 0, 9999 ), true ) ... 碰撞条件是同一微秒内的万分之一概率 ...

或者唯一性要求不那么高的时候常用的在毫秒时间戳外面套一层摘要函数的办法 ... 如 md5( microtime() ) ...

这种方式生成速度比 uniqid 要快 ... 但碰撞条件不明且碰撞概率一定高于 uniqid ...

顺带一提楼上说的在时间戳后面增加随机字符串的方式除了拖慢执行之外毫无意义 ... 并不会降低碰撞概率 ...
答:如果是 linux 或者 mac 上 试试在命令行直接敲 uuidgen 吧……
答:利用 ascii 码自己写一个很简单的吧,重复概率取决于长度
答:补上一条 关于 uuid 出现冲突的可能性见 https://en.wikipedia.org/wiki/Universally_unique_identifier
话说话题是不是可以终结了?
答:<?php

$length = 32;
$crypto_strong = true;
$bytes = openssl_random_pseudo_bytes($length, $crypto_strong);
$hex = bin2hex($bytes);
print_r($hex);
答:用 100 次鼠标移动位置的坐标生成一个 RSA 1024 的字符串,基本上没什么重复的可能性!
答:为什么...不用...UUID 呢...
答:你想要的是 uuid 算法,去看看 uuid v3 , uuid v5 之类的 RFC 吧
答:LZ 要的是随机字符和历史产生的不重复,还是字符串里的字符不重复?

如果是后者,只算字母数字,最大长度 26+10 位。 LZ 我没说错吧。 py 里可以这样

>>> ''.join(random.choice('abcdefghijklmnopqrstuvwxyz0123456789') for _ in xrange(10))
'kaz2spd3hy'
答:UUID
妥妥的
答:分布式大概用机器编码+特征码+时间

其实用 UUID 不就解决了~
答:不说长度?
$hash="";
for ($i=1;$i<100;$i++) $hash .= md5(rand(1,999999999));
答:拼接,简单的随机+时间戳

第一时间我想到的是 uuid ,上面有人提到,我就不细说了。
答:echo bin2hex(random_bytes($length/2));
答:Guid().newID()
答:查看“ php 短网址生成程序”的算法就好了
答:大部分语言内置的随机生成器,只能保证在一定范围内哈希值不重复,没有绝对随机的生成器。这一点可以参考 Donald Knuth 的 the art of computer programming 第二卷里的内容。
答:其实我倒有个新思路
大家在上面谈到的都是怎么生成一定概率不重复的随机字符串,这些概率一般都是在单 server 和少量请求的情况下,一旦放到到复杂的架构中,比如 20 台 servers + 10k/s 请求多半都是歇菜

我想说的是利用一些简单的思路实现 100%不重复的随机字符串,具体如下:

大家只是把随机字符串妖魔化了,其实 1 , 2 , 3 , 4 , 5 不就是不重复的随机字符串吗?好吧如果你要随机字符串 md5(1) 就可以实现,或者利用拼接的方法因为你有 unique 的部分即 1, 2, 3, 4, 5

那么实现方法也很简单

$topic = new Topic();
//TODO add necessary attributes

if ($topic->save()) {
$randString = md5($topic->t_id);

echo $randString;//c20ad4d76fe97759aa27a0c99bff6710
}else{
//save fail, do sth
}

demo code 是用 Yii 写的应该能看得懂

牺牲的是一次数据库写入操作,得到的是一个 unique 的 seed, 这和老实的 order 系统很接近,我唯一做的事情就是把它放到了 RESTful 架构中,真的很好用。

另外附上我前一阵写的一篇文章,希望对楼主有帮助
http://yiilib.com/topic/671/php%E7%94%9F%E6%88%90100%25%E4%B8%8D%E9%87%8D%E5%A4%8D%E9%9A%8F%E6%9C%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95
答:function r($len=5){
$array=range(chr(33),chr(125));
shuffle($array);
for($i=0;$i<$len;$i++)$result.=$array[$i];
return $result;
}
echo r(5);
答:单机的话,自增 uid+随机字符串
绝对不重复,有一定随机性
答:OCaml:

let random_str length =
let gen() = match Random.int(26+26+10) with
n when n < 26 -> int_of_char 'a' + n
| n when n < 26 + 26 -> int_of_char 'A' + n - 26
| n -> int_of_char '0' + n - 26 - 26 in
let gen _ = String.make 1 (char_of_int(gen())) in
String.concat ~sep:"" (Array.to_list (Array.init length ~f:gen))
答:忽略我的回复,刚刚才看到是 PHP 节点的
答:楼上为啥有这么多重复造轮子的。。而且造的还很烂,根本不符合要求
现成的 UUID ,各个语言都有对应的库,嫌太长也有 short uuid 。
答:随机的重要程度和唯一的重要程度哪个更高些?时效有没有要求?
答:加上用户 id 就 ok 了
答:首先如果是无限数量肯定不能同时保证唯一和随机
数量不多的话我倾向于预先生成
答:说 md5 的是没考虑性能。。。生成 10 亿给大家看看
答:php 肯定是 uniqid 啊,楼上都在想什么 http://php.net/manual/zh/function.uniqid.php
答:uniqid 也有概率重复,可以一个进程专门生成随机串,插入到队列,需要的时候从队列取
答:uuid4
答:Des(0) des(1) des(2) ... 保证不重复,并且看似随机。
答:twitter 有个库,不过根据其算法,只能保证 x 年内不重复,自己搜吧。
答:说 MD5 慢的,你咋不上天, 10 亿也是秒级的。
答:UUID
答:有限長度與不重複不是明顯互斥嗎
答:可以参考 twitter 的 Snowflake 算法
答:UUID 吧, 重复概率极小

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 有哪些能够生成随机不重复字符串的算法或者函数?

admin 钻石

分享到:
上一篇
手上有个 Z8NA-D6 的闲置主板,想 DIY 台服务器(台式)玩玩
下一篇
云服务器能否实现接口转发?

相关推荐

python多线程任务冲突

python多线程任务冲突

MindGo 问财语句策略,让交易更简单!

MindGo 问财语句策略,让交易更简单!

有个想法,将 squoosh 再包装一下,包装成一个库,求大佬实现!

有个想法,将 squoosh 再包装一下,包装成一个库,求大佬实现!

求好的 client JS 框架推荐

求好的 client JS 框架推荐

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...