• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 产生唯一随机码方法疑问

产生唯一随机码方法疑问

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了产生疑问,产生疑问英文,产生疑问的图片,我对什么产生了疑问,牛顿从什么产生了疑问等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:产生唯一随机码方法疑问
描述:

现在的web应用中都经常会遇到邀请码或激活码等问题,如何生成唯一且随机的激活码是一个问题。下面的这个方法的唯一性怎么得到的。

条件是邀请码都是数字的
1) 获取id: 155
2) 转换成8进制:233
3) 转为字符串,并在后面加'9'字符:2339
4)在后面随机产生若干个随机数字字符:2003967524987
转为8进制后就不会出现9这个字符,然后在后面加个'9',这样就能确定唯一性。最后在后面产生一些随机数字就可以。


解决方案1:

ID是唯一的,不然就不是ID了。那么ID不管转成几进制,它都是唯一的,为什么要加9呢?

注意这里还有一个后续的操作,就是后缀一个随机数,那么,假设我们用10进制,就可能会出现这样的情况

ID=15,R=56789,拼出来是156789
ID=155,R=6789,拼出来是156789
出现重复

解决办法是在ID和随机数R之间加一个分隔符,避免它们的混淆。

如果没要求随机码是数字,那这个分隔符好办,但看楼主的意思,这个随机码得是数字组成的,所以需要用一个不可能出现在ID中的数字来作为分隔符,所以……聪明人想到了8进制,因为8进制里没有8和9,可以用8或者9来作为分隔符。

当然,2-8进制都是可以的,但是2进制生成的验证码太长,3-7进制不常用,也没有现成的算法,所以就选了8进制了。如果要求随机码尽可能的短,那么用9进制平均会短一点……这都是题外话了。

现在,ID唯一,ID转换为8进制唯一,加上固定的分隔符8或者9(任选其一,但选定了就得一直使用,不能换了),再加上任意后缀,它都唯一。

仍然需要注意,为同一个ID生成的两个随机码有可能出现重复,不过随机码一般都是使用一次就丢弃,所以一般不会出现为一个ID生成两个随机码的情况,所以可以不考虑了。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 产生唯一随机码方法疑问

相关文章

  • 2017-06-07 为什么接口设计都不用普通POST?
  • 2017-06-07 golang如何调用net下c#写的dll库
  • 2017-06-07 怎么获取域名链接地址?
  • 2017-06-07 七牛管理中,list只有列举,无法获取总数啊?
  • 2017-06-07 (python)django如何接收post过来的json数据?
  • 2017-06-07 七牛的bug,我不知道七牛的开发者怎么想的?
  • 2017-06-07 百度URL加密怎么破解cki
  • 2017-06-07 我手机永远下载的都是旧版本文件
  • 2017-06-07 如何下载视频到mp4如何合并七牛的mp4静音视频和mp3音频
  • 2017-06-07 pyqt5程序卡死,且出现assertion'GTK_IS_WIDGETwidget'failed等错误

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • pythonbytes怎么分割成若干个bytes
    • IOS七牛上传图片返回错误?什么原因
    • (python)使用phantomjs时,提取element包含的所有内容?
    • Couldnotreadgem
    • 关于字符编码问题
    • (python)中str转成bytes类型后用csvwriterow写入csv文件仍然出错
    • (python)基因组中寻找特定要求序列,求一个计算速度快的方法
    • fish更改环境变量
    • 关于python能否解决粘合JAVA和C++代码问题
    • 运行pythonapy后如何暂停呢?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有