首页 > 代码库 > 随机数

随机数

      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

随机数