008:Why does this code using random strings print “hello world”?
2016-08-08 19:04
417 查看
题目:为什么输出hello word?
程序中加入下面一行代码:
输出结果
发现正好是hello word
这说明两个问题:
1.随机数是如何产生的?
其实是已经产生好的随机数表,根据输入的随机数种子,确定选取的随机数的起始位置开始取出随机数。这样根据输入的随机数种子,每次参数的随机数就是固定的。在小学还是初中数学书上都有个随机数表,当需要用的时候就自己随机确定位置产生随机数。
2.整型转化成对应的 char类型
这样恰好形成hello word
这个更强大
输出
本专题来源stackoverflow 标签是java的投票数比较高的问题以及回答,我只对上面的回答根据自己的理解做下总结。
import java.util.*; public class stackoverFlow { public static void main(String[] args) { System.out.println(randomString(-229985452) + " " + randomString(-147909649)); } public static String randomString(int i) { Random ran = new Random(i); StringBuilder sb = new StringBuilder(); while (true) { int k = ran.nextInt(27); if (k == 0) break; sb.append((char)('`' + k)); } return sb.toString(); } }
程序中加入下面一行代码:
System.out.println(k+" + "+ Integer.valueOf('`') +" = "+ (k+ Integer.valueOf('`')) + " ,toChar = " + (char)('`' + k));
输出结果
8 + 96 = 104 ,toChar = h 5 + 96 = 101 ,toChar = e 12 + 96 = 108 ,toChar = l 12 + 96 = 108 ,toChar = l 15 + 96 = 111 ,toChar = o 23 + 96 = 119 ,toChar = w 15 + 96 = 111 ,toChar = o 18 + 96 = 114 ,toChar = r 12 + 96 = 108 ,toChar = l 4 + 96 = 100 ,toChar = d
发现正好是hello word
这说明两个问题:
1.随机数是如何产生的?
其实是已经产生好的随机数表,根据输入的随机数种子,确定选取的随机数的起始位置开始取出随机数。这样根据输入的随机数种子,每次参数的随机数就是固定的。在小学还是初中数学书上都有个随机数表,当需要用的时候就自己随机确定位置产生随机数。
2.整型转化成对应的 char类型
这样恰好形成hello word
这个更强大
int[] arrInt = {-2146926310, -1885533740, -274140519, -2145247212, -1845077092, -2143584283, -2147483454, -2138225126, -2147375969}; for(int seed : arrInt){ System.out.print(randomString(seed) + " "); }
输出
the quick browny fox jumps over a lazy dog
本专题来源stackoverflow 标签是java的投票数比较高的问题以及回答,我只对上面的回答根据自己的理解做下总结。
相关文章推荐
- Why does this code using `::boost::bind` get a compiler error?
- WHO IS USING THIS TCODE
- 文件页面头部This file does not belong to any project target, code insight features might not work properly
- Erlang: Why does this fail with a 'badarith' exception?
- Unable to code design using identities in this team: no private keys available
- Using R — Calling C Code ‘Hello World!’
- 转:Code-blocks are not allowed in this file: Using Server-Side Code with SharePoint
- Why does the C# compiler translate this != comparison as if it were a > comparison?
- 异常crrently using minified code outside of NODE_ENV === 'production'. This means that 。。。
- Why c++ has friend members while C# does not have this?
- give you the answer that why using "PRESERVE8" in startup code
- Why does my Cyclone III FPGA fail to access the EPCS device using the EPCS Controller module?
- the coach why he does this
- Why this code compile OK, but throw ClassCastException at run time?
- Why does Python print unicode characters when the default encoding is ASCII?
- Unable to code design using identities in this team: no private keys available
- sql: MySQL and Microsoft SQL Server Stored Procedures IN, OUT using csharp code
- does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE
- csharp:SQLite and Access using C# code read data
- does not contain bitcode