有意思的随机数 Random
今天看到stackoverflow上一篇关于随机数的提问,关于如何用随机数生成 "hello world"的有趣问题 :

大家都知道JDK里面的Random类生成随机数其实并不是真正意义上的随机数,而是伪随机(pseudorandom)。Random生成随机数时需要一个随机种子(seed),不管Random对象是否相同,只要随机种子相同,生成的随机数是来自同一个列表的。
比如随机种子为 -229985452 ,那么生成的随机数列表应该是 :
8, 5, 12, 12, 15, 0, 4, 21, 9, 2, 19, 1, 14, 25, 20, 6, 23, 19, 2, 23, 20, 23, 20 ......
对应的字符列表应该是 :
hello`duibsanytfwsbwtwtffwdbrxbogptpcvhhxd`troxqamrjbsegsyalqjmdxkwzbf
随机种子为 -147909649 ,那么生成的随机数列表应该是 :
23, 15, 18, 12, 4, 0, 16, 6, 5, 25, 19, 11, 0, 14, 16, 11, 1, 24, 14, 2, 1, 17, 23 ......
对应的字符列表应该是 :
world`pfeysk`npkaxnbaqwhmkmauuyhvxptcjidgthgdwjsfyiiarupbfupjcb`ajkr`mb
也就是说 : 写出这代码的人已经知道这俩随机种子生成的前几个数字对应字符hello world ,所以他用这两个随机种子生成了hello world。那么问题来了,究竟如何得到指定字符集对应的随机数呢?例如如果生成hello man又对应什么样的随机种子呢?这个应该和Random内部算法有关系。在此埋一个坑,等调查清楚会再次更新。
有意思的随机数 Random的更多相关文章
- (五)boost库之随机数random
(五)boost库之随机数random boost库为我们提供了许多的日常随机数生成器: 1.uniform_smallint:在小整数域内的均匀分布 2.uniform_int:在整数域上的均匀分布 ...
- Python 随机数 random
1. Python seed() 函数 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数. seed( )是不能直接访问的,需要导入 random 模块,然后 ...
- [Swift] 随机数 | Random numbers
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- JS对象随机数 random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数。 注意:返回一个大于或等于 0但小于1的符号为正的数值
随机数 random() random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数. 语法: Math.random(); 注意:返回一个大于或等于 0 但小于 1 ...
- Java如何生成随机数 - Random、ThreadLocalRandom、SecureRandom
Java7 的Random伪随机数和线程安全的ThreadLocalRandom 一.Random伪随机数: Random 类专门用于生成一个伪随机数,它有两个构造器: 一个构造器使用默认的种子(以当 ...
- 随机数(random)
需求 Random rd=new Random(); 需要十以内的随机数 (0---10) System.out.println((int)((rd.nextDouble()*100)/10)); ...
- shell脚本获取随机数random
用C提供的取随机数的方法srand和rand, 前者是给后者设置随机数种子seed. ; srand(seed); // time(NULL) 通常使用时间做种子 rnd_num = rand(); ...
- Python之数学(math)和随机数(random)
math包包含了最基本的数学运算函数,如果想要更加高级的数学功能,可以使用标准库外的numpy和scipy库,他们不但支持数组和矩阵运算, 还有丰富的数学和物理方程可供使用 random包可以用来生成 ...
- C# -- 随机数(Random)的使用
使用随机数产生一组大乐透号码 1. C#代码 1 Console.WriteLine("===============大乐透===红色球==============="); Lis ...
随机推荐
- mysql数据库如何设置表名大小写不敏感?
转自:https://blog.csdn.net/iefreer/article/details/8313839 在跨平台的程序设计中要注意到mysql的一些系统变量在windows和linux上的缺 ...
- vue+node+mongoDB 火车票H5(四)---完成静态页面
各项配置都好了,就可以开始写静态页面了,先别急着写,看一下页面又哪些公用的部分可以提取出来的,统一放到components组件文件夹中 header头部文件夹放一些头部常用组件,如首页的banner切 ...
- 160810、Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- Powershell运行Invoke-Sqlcmd命令的先决条件
运行Invoke-Sqlcmd命令,使用这个命令需满足如下条件: 1.在运行服务器中安装SQL Server 2008 R2 Management ObjectsI 2.在运行命令 invoke-sq ...
- Java 语言基础之语句
程序的四种流程控制结构: 顺序结构 判断结构 : if 语句 选择结构 : switch 语句 循环结构 : while 语句, do...while 语句, for 语句 以下主要分析循环结构: w ...
- JQuery基础与事件和动画
JQuery语法 1.JQuery("选择器").action; 通过选择器调用时间函数 但Jquery可以用$符号代替,即$("选择器").action; ① ...
- Consistent hashing
Download source code - 20.3 KB What is libconhash libconhash is a consistent hashing library which c ...
- struct 模块 把一个类型,如数字,转成固定长度的bytes
该模块可以把一个类型,如数字,转成固定长度的bytes import struct headers=struct.pack('i',132333) print(headers,len(headers) ...
- 008-shiro与spring web项目整合【二】认证、授权、session管理
一.认证 1.添加凭证匹配器 添加凭证匹配器实现md5加密校验. 修改applicationContext-shiro.xml: <!-- realm --> <bean id=&q ...
- NoSQL选型及HBase案例详解(转)
从 NOSQL的类型到 常用的产品,我们已经做过很多关于NoSQL的文章,今天我们从国内著名的互联网公司及科研机构的实战谈一下NoSQL数据库. NoSQL一定程度上是基于一个很重要的原理—— CAP ...