首页 > 代码库 > 随机数
随机数
1. 在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
例如:
1 public class MathRondom { 2 /** 3 * 定义产生偶数的方法 4 * @param num1 起始范围参数 5 * @param num2 终止范围参数 6 * @return 随即的范围内偶数 7 */ 8 public static int GetEvenNum(double num1, double num2) { 9 // 产生num1~num2之间的随机数 10 int s = (int) num1 + (int) (Math.random() * (num2 - num1)); 11 if (s % 2 == 0) { // 判断随机数是否为偶数 12 return s; // 返回 13 } else 14 // 如果是奇数 15 return s + 1; // 将结果加1后返回 16 } 17 18 public static void main(String[] args) { 19 // 调用产生随机数方法 20 System.out.println("任意一个2~32之间的偶数:" + GetEvenNum(2, 32)); 21 } 22 }
运行结果:
任意一个2~32之间的偶数:18 (或指定范围内其他数字)
分析:同上述方法一致,也可以产生a~z之间的字符串 (char)(‘a‘+Math.random()*(‘z‘ - ‘a‘ + 1));
或A~Z之间的随机数 (char)(char1+Math.random()*(char2 - char1 +1));例如下面的代码:
1 public class MathRandomChar { 2 // 定义获取任意字符之间的随机字符 3 public static char GetRandomChar(char cha1, char cha2) { 4 return (char) (cha1 + Math.random() * (cha2 - cha1 + 1)); 5 } 6 7 public static void main(String[] args) { 8 // 获取a~z之间的随机字符 9 System.out.println("任意小写字符" + GetRandomChar(‘a‘, ‘z‘)); 10 // 获取A~Z之间的随机字符 11 System.out.println("任意大写字符" + GetRandomChar(‘A‘, ‘Z‘)); 12 // 获取0~9之间的随机字符 13 System.out.println("0到9任意数字字符" + GetRandomChar(‘0‘, ‘9‘)); 14 } 15 }
运行结果:
任意小写字符p
任意大写字符X
0到9任意数字字符9(或其他结果)
2.Random类
除了Math类中的random()方法可以获取随机数之外,在Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。 语法如下: Random r=new Random(); 其中,r是指Random对象。例如下面代码:
1 public class RandomDemo { 2 public static void main(String[] args) { 3 Random r = new Random(); // 实例化一个Random类 4 // 随机产生一个整数 5 System.out.println("随机产生一个整数:" + r.nextInt()); 6 // 随机产生一个大于等于0小于10的整数 7 System.out.println("随机产生一个大于等于0小于10的整数:" + r.nextInt(10)); 8 // 随机产生一个布尔型的值 9 System.out.println("随机产生一个布尔型的值:" + r.nextBoolean()); 10 // 随机产生一个双精度型的值 11 System.out.println("随机产生一个双精度型的值:" + r.nextDouble()); 12 // 随机产生一个浮点型的值 13 System.out.println("随机产生一个浮点型的值:" + r.nextFloat()); 14 // 随机产生一个概率密度为高斯分布的双精度值 15 System.out.println("随机产生一个概率密度为高斯分布的双精度值:" 16 + r.nextGaussian()); 17 } 18 }
运行结果:
随机产生一个整数:1007862560
随机产生一个大于等于0小于10的整数:3
随机产生一个布尔型的值:false
随机产生一个双精度型的值:0.7102648045789365
随机产生一个浮点型的值:0.31149262
随机产生一个概率密度为高斯分布的双精度值:-0.2646002913429201
随机数