java随机整数怎么输出_神奇,教你用随机数打印hello world

下面是一段随机数程序。

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

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

更多Java好文请关注Java技术栈微信公众号,在公众号后台回复关键字:java,以下仅为部分预览。出场率比较高的一道多线程安全面试题

Java类初始化顺序,大神3个示例带你躺坑

switch case 支持的 6 种数据类型!

面试常考:Synchronized 有几种用法?

Hashtable 为什么不叫 HashTable?

本文原创首发于微信公众号:Java技术栈(id:javastack),转载请原样保留本信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值