• 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

佚名通过本文主要向大家介绍了给定值,给定值英文,圆弧截掉给定值,pid给定值,什么是给定值等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何根据给定值,生成一个固定的随机数?
描述:

假如我需要一个1-10之间的随机整数,而且我给定一个ID.
我想要根据ID去生成随机数,
如果ID不变,则生成的随机数就不变,如果ID改变则生成一个新的随机数
求指教

语言环境最好是:JavaScript


解决方案1:

随机。。。然后有定值。。
我想到的就是哈希之类的。(加密转化)之类的。

解决方案2:

问题不完整,不能让大家去猜你的问题。。。

解决方案3:

如果ID不变,则生成的随机数就不变,如果ID改变则生成一个新的随机数

只要你的算法的唯一变量(任意随机因素都是变量)是传入的ID,都能实现。

ID % 10 // 唯一变量
# 或者
(ID * random()) % 10 //有随机因素加入

解决方案4:

同意一楼的看法,将ID设为seed,然后生成的随机数对10进行取模,如果结果为0,则修改为10,得到的就是1~10内的随机数了。

解决方案5:

如果不考虑并发的问题,只要每次都是重新设置随机数的seed为ID话,那么每次再生成的随机数就一样

解决方案6:

看意思,其实是要找一个……哈希值?可以对于ID转换后的整数模10运算,然后对于从0-9每个数字自定义一种到1-10的一一映射就好了~~

解决方案7:

没有语言/场景很难回答啊,除了其他人提过的设seed以外,我提供另外一个思路吧:

利用hash算法,常见的md5/sha1之类都行,hash(ID + 'catonkeyboard') / 10 这样

比起seed来说,很可能慢不少,但好处在于hash算法是标准的,可以做到跨语言跨机器跨各种环境一致

解决方案8:

看了你的需求,目标集只有1~10十种情况,说它是随机数实在有点……

上代码吧,假设ID是字符串。

function generate(id){
    var sum = 0;
    for(var i = 0; i < id.length; i++){
        sum += id.charCodeAt(i);
    }
    return (sum % 10) + 1;
}

generate("foo"); // 5
generate("bar"); // 10
generate("segmentfault"); // 6
generate("stackoverflow"); // 9

这个算出来,分布肯定没有那么均匀,不过看了你的需求,应该不会太在意这个。


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

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

  • 如何根据给定值,生成一个固定的随机数?

相关文章

  • 2017-06-07 空间自定义域名
  • 2017-06-07 如何优雅的使用vagrant来管理运行多个web项目
  • 2017-06-07 如何使网站服务器与固定IP相关联
  • 2017-06-07 (python)Linux下安装uwsgi失败
  • 2017-06-07 如何在Python项目中使用ruby库
  • 2017-06-07 Python写excel文件报错
  • 2017-06-07 laravel的页面局部刷新问题
  • 2017-06-07 七牛云存储,空间内文件更新后,别处访问的还是旧文件
  • 2017-06-07 七牛JAVASDK里,PutPolicy和Mac使用完之后需不需要释放?
  • 2017-06-07 GO语言为什么不在C的原语法上直接扩展?

文章分类

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

最近更新的内容

    • Itisaboutsettingdpiphotothatitwllnotchangeyoufilesize?
    • 七牛插件和visualcomposer插件冲突
    • Word开发中如何知道文本框是什么类型?
    • (golang)请问写go的mvc时候需要用到reflect吗?
    • 打开bmp时“不能完成请求,因为文件格式模块不能解析该文件”
    • C++一直超时,如何优化
    • (python)Mongodb中数组元素的个数统计
    • 安装好Vagrantlarval/homestead之后,启动虚拟机无法indexphp
    • resttemplate怎么上传文件流
    • 微信,微博等授权登录成功后,用户信息保存的问题

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

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