神奇,教你用随机数打印hello world

来源:互联网 发布:ms8.0 linux安装教程 编辑:程序博客网 时间:2024/05/22 00:54

下面是一段随机数程序。

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面试题(首发,70道,带详细答案)

2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案

Spring面试题(70道,史上最全)

17张图揭密支付宝系统架构

阿里巴巴,排行前10的开源项目!

2018年必看:关于区块链技术的10本书

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


扫我关注
扫我关注
原创粉丝点击