博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
神奇,教你用随机数打印hello world
阅读量:7072 次
发布时间:2019-06-28

本文共 959 字,大约阅读时间需要 3 分钟。

下面是一段随机数程序。

public static void main(String[] args) {    System.out.println(randomString(-229985452) + " " + randomString(-147909649));}public static String randomString(int seed) {    Random ran = new Random(seed);    StringBuilder sb = new StringBuilder();    while (true) {        int k = ran.nextInt(27);        if (k == 0) {            break;        }        sb.append((char) ('`' + k));    }    return sb.toString();}

每次都会输出:hello world,这是为什么呢??

Random构造函数,参数seed是初始种子,相同的种子每次产生的随机数都一样,所以无论怎么随机,构造出来的随机数都一样。

Random r = new Random(-229985452)

会产生以下5位不为0的随机数:

85121215

Random r = new Random(-147909649)

会产生以下5位不为0的随机数:

231518124

程序里面用`符号相加,`代表96.

所以,有下面的结果:

8  + 96 = 104 --> h5  + 96 = 101 --> e12 + 96 = 108 --> l12 + 96 = 108 --> l15 + 96 = 111 --> o23 + 96 = 119 --> w15 + 96 = 111 --> o18 + 96 = 114 --> r12 + 96 = 108 --> l4  + 96 = 100 --> d

一段很简单的程序却如此神奇,分享给别人,看他知道不?

推荐阅读


分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

扫我关注

转载地址:http://pdell.baihongyu.com/

你可能感兴趣的文章
Win7如何改变用户文件夹位置
查看>>
Highchart
查看>>
git mergetool 解决冲突的问题
查看>>
jquery 给每个li增加事件
查看>>
Visual Studio VS如何切换代码自动换行
查看>>
近期(17年三月至四月) TODOlist
查看>>
Win10系列:C#应用控件基础11
查看>>
Swift3.0:NSURLConnection的使用
查看>>
非负矩阵分解(3):拉格朗日乘子法求解
查看>>
Hadoop学习笔记(一)——编译安装和配置
查看>>
Eclipse使用hibernate插件反向生成实体类和映射文件
查看>>
C - The C Answer (2nd Edition) - Exercise 1-2
查看>>
POJ 1579 Function Run Fun 记忆化递归
查看>>
天凉好个秋(连载九)
查看>>
spring的关于数据源的datasource接口的深入理解
查看>>
GO语言使用开源SSH模拟终端
查看>>
go-007-条件语句
查看>>
atol的实现【转】
查看>>
Ubuntu打开终端的方法三种
查看>>
【Git使用具体解释】Egit的经常使用操作具体解释
查看>>