随机数产生的方法
1. 随机数产生的方法:最小值+Math.random()*最大值;范围 [最小值,最大值] 。
public class suijishu { public static void main(String[] args) { int n; for(int i=0;i<20;i++) { n=(int)(Math.random()*6); System.out.print(n+" "); if((i+1)%5==0) System.out.println(" "); } } }
产生范围在 [0,6]之间。
2.用new.random.nextInt(26)输出一个处于0到26的整数
public class suijishu { public static void main(String[] args) { Random rand=new Random(); System.out.println("rand.nextBoolean():"+rand.nextBoolean()); System.out.println("rand.nextFloat():"+rand.nextFloat());//生成一个0.0到1.0之间的伪随机float数。 System.out.println("rand.nextDouble():"+rand.nextDouble());//生成一个0.0到1.0 之间的伪随机double数。 System.out.println("rand.nextInt(10):"+rand.nextInt(10));//生成一个0到10的伪随机整数。 System.out.println("rand.nextLong():"+rand.nextLong());//生成一个处于long整数取值范围的整数。 } }
3.用不同种子产生随机数,和用当前时间来产生随机数。
public class suijishu { public static void main(String[] args) { System.out.println("第一个种子为50:"); Random r1=new Random(50); System.out.println("r1.nextBoolean():"+r1.nextBoolean()); System.out.println("r1.nextDouble():"+r1.nextDouble()); System.out.println("r1.nextFloat"+r1.nextFloat()); System.out.println("r1.nextInt()"+r1.nextInt()); System.out.println("r1.nextLong:"+r1.nextLong()); System.out.println("第二个种子为50:"); Random r2=new Random(50); System.out.println("r2.nextBoolean():"+r2.nextBoolean()); System.out.println("r2.nextDouble():"+r2.nextDouble()); System.out.println("r2.nextFloat"+r2.nextFloat()); System.out.println("r2.nextInt()"+r2.nextInt()); System.out.println("r2.nextLong:"+r2.nextLong()); System.out.println("种子为100:"); Random r=new Random(100); System.out.println("r.nextBoolean():"+r.nextBoolean()); System.out.println("r.nextDouble():"+r.nextDouble()); System.out.println("r.nextFloat"+r.nextFloat()); System.out.println("r.nextInt()"+r.nextInt()); System.out.println("r.nextLong:"+r.nextLong()); System.out.println("以当前时间为种子:"); Random rt= new Random( System.currentTimeMillis() ); System.out.println("rt.nextBoolean():"+rt.nextBoolean()); System.out.println("rt.nextDouble():"+rt.nextDouble()); System.out.println("rt.nextFloat"+rt.nextFloat()); System.out.println("rt.nextInt()"+rt.nextInt()); System.out.println("rt.nextLong:"+rt.nextLong()); }
结果:种子为五十的产生数相同。种子为100的产生数不同,而种子为当前时间的所产生随机数是独一无二的。
3.产生1000个随机数。
public class suijishu { public static void rand(long x) { long a; for(int i=0;i<1000;i++) { a=(x*16807)%Integer.MAX_VALUE; System.out.println(a); x=a; } } public static void main(String[] args) { System.out.println("种子数为:"); Scanner in=new Scanner(System.in); long seed; seed=in.nextLong(); rand(seed); } }