在看Thinking in Java,有一段实在没看懂
package com.company.allAreTheObjective.Symbol; import java.util.*; /** * Created by Francis on 12/05/2016. */ public class VowelsAndConsonants { public static void main(String args[]){ Random rand = new Random(47); for (int i = 0; i < 100; i++){ int c = rand.nextInt(26) + 'a'; System.out.print((char)c+","+ c +":"); switch(c){ case 'u' : System.out.println("vowel");break; case 'w' : System.out.println("Sometimes a vowel");break; default : System.out.println("constant"); } } } }
这一段为什么输出恒为
y,121:constant
n,110:constant
z,122:constant
b,98:constant
r,114:constant
n,110:constant
y,121:constant
相同种子数的Random对象,相同次数生成的随机数字是完全相同的.
修改成Random rand = new Random()就好。
把new Random(47)
改成new Random()
就好了。
计算机产生的随机数都是伪随机数,只要给的初始化种子一样,生成的随机数序列就是一样的。
程序产生的都是伪随机数,你的随机数种子固定为47,每次生成的当然都一样,想要不一样可以把种子改成时间戳之类的