前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神奇,教你用随机数打印hello world

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

作者头像
Java技术栈
发布2018-03-30 15:07:59
8050
发布2018-03-30 15:07:59
举报
文章被收录于专栏:Java技术栈Java技术栈

下面是一段随机数程序。

代码语言:javascript
复制
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的随机数:

代码语言:javascript
复制
8
5
12
12
15

Random r = new Random(-147909649)

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

代码语言:javascript
复制
23
15
18
12
4

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

所以,有下面的结果:

代码语言:javascript
复制
8  + 96 = 104 --> h
5  + 96 = 101 --> e
12 + 96 = 108 --> l
12 + 96 = 108 --> l
15 + 96 = 111 --> o

23 + 96 = 119 --> w
15 + 96 = 111 --> o
18 + 96 = 114 --> r
12 + 96 = 108 --> l
4  + 96 = 100 --> d

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档