Java生成随机数

jopen 10年前

1.java的Random是伪随机,在一个区间会等几率生成随机数。利用这个可实现概率问题:
实现60%几率执行A程序,30%几率执行B程序,10%几率执行C程序。

Random rnd = new Random();  double d = rnd.nextDouble();  if(d<=0.6){   System.out.println("执行A");  }else if(d<=0.9){   System.out.println("执行B");  }else{   System.out.println("执行C");  }



2.Random里的种子数是个生成随机数的起源数,与生成什么没有关系。两个种子数相同的Random生成的同类型随机数也是相同的,内部执行的算法是一致的,应用中一般只使用一个Random对象。但new Random()的种子数是随机的,两个new Random()生成的同类型随机数基本都是不同的。
3.Random里的方法nextBytes(byte[] bytes)给bytes附上随机字节,无返回值。
4.几个例子:
生成[-3,15)之间的随机数:
System.out.println(rnd.nextInt(4) * (-1) + rnd2.nextInt(15));  System.out.println(rnd.nextInt(18) - 3);



生成[1,2.5]之间的随机数:
System.out.println(1 + rnd.nextDouble() * 0.5 + rnd.nextInt(2));  System.out.println(rnd.nextDouble() * 1.5 + 1);



生成.[0,5.0]之间的随机数:
System.out.println(rnd2.nextDouble() + rnd2.nextInt(5));  System.out.println(rnd2.nextDouble() * 5);



5.nextBoolean随机生成true  false,Math.random()调用的是Random的nextDouble()