第一种方法,使用静态类Math中的random()函数。
Math.random()返回带正号的 double
值,该值大于等于0.0
且小于1.0
。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。第一次调用该方法时,它将创建一个新的伪随机数生成器,与 new java.util.Random 完全相同。之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。
此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。
它生成的数是大于等于0.0且小于1.0的伪随机double值。
例如 : double i = Math.random(); 生成的数为0.4664621927561753;如想要生成1-10的整数: double i = Math.ceil(Math.random() * 10);
第二种方法,使用java.util.Random类
Random有两个构造方法:Random()和Random(long seed),创建一个新的随机数生成器。
如果用相同的种子创建两个 Random
实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
Random r=new java.util.Random(10);
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
运行生成十个随机的数,可能不同,可能相同。但程序每次执行的结果都相同。
setSeed(long seed):使用单个long
种子设置此随机数生成器的种子。
r.nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int
值。nextInt
的常规协定是,伪随机地生成并返回一个int
值。所有 232 个可能int
值的生成概率(大致)相同。
r.nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的int
值。
r.nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0
和1.0
之间均匀分布的double
值。next
r.nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean
值。返回true or false 概率接近50%
r.nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。
Random r=new java.util.Random(10);
byte[] bytes = new byte[10];
r.nextBytes(bytes);
for(int i=0;i<10;i++){
System.out.print(bytes[i] + " ");
} // 输出结果:-46 122 -3 -70 -8 22 21 114 58 93