美文网首页Java高级技术
神奇,教你用随机数打印hello world

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

作者: Java技术栈 | 来源:发表于2017-11-14 13:38 被阅读0次

    下面是一段随机数程序。

    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的随机数:

    8
    5
    12
    12
    15
    

    Random r = new Random(-147909649)

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

    23
    15
    18
    12
    4
    

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

    所以,有下面的结果:

    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
    

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


    更多干货推荐

    1.史上最强 Java 中高级面试题整理

    2.史上最强 Spring Boot & Cloud 教程整理

    3.史上最强架构设计分布式技术干货整理

    给大家送福利了,扫码关注Java技术栈微信公众号,在后台回复:666,可免费获取我最新整理的架构师学习资料,都是个人收藏学习的。

    扫码关注Java技术栈微信公众号

    相关文章

      网友评论

        本文标题:神奇,教你用随机数打印hello world

        本文链接:https://www.haomeiwen.com/subject/ujaxvxtx.html