• Java-随机数工具类


      1 import java.util.Random;
      2 import java.util.concurrent.ThreadLocalRandom;
      3 import org.apache.commons.lang3.RandomUtils;
      4 import org.apache.commons.math3.random.RandomDataGenerator;
      5 
      6 /**
      7  * @ClassName: RandomUtil
      8  * @Description: 随机数工具类
      9  * (分别使用java.util.Random、Apache Common Math3、Apache Common Lang3、TreadLocalRandom)
     10  */
     11 public class RandomUtil {
     12     /**
     13      * 随机数Int的生成
     14      */
     15     // 随机数生成无边界的Int
     16     public static int getRandomForIntegerUnbounded() {
     17         int intUnbounded = new Random().nextInt();
     18         System.out.println(intUnbounded);
     19         return intUnbounded;
     20     }
     21 
     22     // 生成有边界的Int
     23     public static int getRandomForIntegerBounded(int min, int max) {
     24         int intBounded = min + ((int) (new Random().nextFloat() * (max - min)));
     25         System.out.println(intBounded);
     26         return intBounded;
     27     }
     28 
     29     // 包含1而不包含10
     30     // 使用Apache Common Math3来生成有边界的Int
     31     public static int getRandomForIntegerBounded2(int min, int max) {
     32         int intBounded = new RandomDataGenerator().nextInt(min, max);
     33         System.out.println(intBounded);
     34         return intBounded;
     35     }
     36 
     37     // 包含1且包含10
     38     // 使用Apache Common Lang3的工具类来生成有边界的Int
     39     public static int getRandomForIntegerBounded3(int min, int max) {
     40         int intBounded = RandomUtils.nextInt(min, max);
     41         System.out.println(intBounded);
     42         return intBounded;
     43     }
     44 
     45     // 使用TreadLocalRandom来生成有边界的Int,包含min而不包含max
     46     public static int getRandomForIntegerBounded4(int min, int max) {
     47         int threadIntBound = ThreadLocalRandom.current().nextInt(min, max);
     48         System.out.println(threadIntBound);
     49         return threadIntBound;
     50     }
     51 
     52     /**
     53      * 随机数Long的生成
     54      */
     55     // 随机数生成无边界的Long
     56     public static long getRandomForLongUnbounded() {
     57         long unboundedLong = new Random().nextLong();
     58         System.out.println(unboundedLong);
     59         return unboundedLong;
     60     }
     61 
     62     // 因为Random类使用的种子是48bits,所以nextLong不能返回所有可能的long值,long是64bits。
     63     // 使用Random生成有边界的Long
     64     public static long getRandomForLongBounded(long min, long max) {
     65         long rangeLong = min + (((long) (new Random().nextDouble() * (max - min))));
     66         System.out.println(rangeLong);
     67         return rangeLong;
     68     }
     69 
     70     // 使用Apache Commons Math3来生成有边界的Long(RandomDataGenerator类提供的生成随机数的方法)
     71     public static long getRandomForLongBounded2(long min, long max) {
     72         long rangeLong = new RandomDataGenerator().nextLong(min, max);
     73         System.out.println(rangeLong);
     74         return rangeLong;
     75     }
     76 
     77     // 使用Apache Commons Lang3的工具类来生成有边界的Long(RandomUtils提供了对java.util.Random的补充)
     78     public static long getRandomForLongBounded3(long min, long max) {
     79         long longBounded = RandomUtils.nextLong(min, max);
     80         System.out.println(longBounded);
     81         return longBounded;
     82     }
     83 
     84     // 使用ThreadLocalRandom生成有边界的Long
     85     public static long getRandomForLongBounded4(long min, long max) {
     86         long threadLongBound = ThreadLocalRandom.current().nextLong(min, max);
     87         System.out.println(threadLongBound);
     88         return threadLongBound;
     89     }
     90 
     91     /**
     92      * 随机数Float的生成
     93      */
     94     // 随机数Float的生成生成0.0-1.0之间的Float随机数
     95     public static float getRandomForFloat0To1() {
     96         float floatUnbounded = new Random().nextFloat();
     97         System.out.println(floatUnbounded);
     98         return floatUnbounded;
     99     }
    100 
    101     // 以上只会生成包含0.0而不包括1.0的float类型随机数生成有边界的Float随机数
    102     public static float getRandomForFloatBounded(float min, float max) {
    103         float floatBounded = min + new Random().nextFloat() * (max - min);
    104         System.out.println(floatBounded);
    105         return floatBounded;
    106     }
    107 
    108     // 使用Apache Common Math来生成有边界的Float随机数
    109     public static float getRandomForFloatBounded2(float min, float max) {
    110         float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat();
    111         float generatedFloat = min + randomFloat * (max - min);
    112         System.out.println(generatedFloat);
    113         return generatedFloat;
    114     }
    115 
    116     // 使用Apache Common Lang来生成有边界的Float随机数
    117     public static float getRandomForFloatBounded3(float min, float max) {
    118         float generatedFloat = RandomUtils.nextFloat(min, max);
    119         System.out.println(generatedFloat);
    120         return generatedFloat;
    121     }
    122 
    123     // 使用ThreadLocalRandom生成有边界的Float随机数
    124     // ThreadLocalRandom类没有提供
    125 
    126     /**
    127      * 随机数Double的生成
    128      */
    129     // 生成0.0d-1.0d之间的Double随机数
    130     public static double getRandomForDouble0To1() {
    131         double generatorDouble = new Random().nextDouble();
    132         System.out.println(generatorDouble);
    133         return generatorDouble;
    134     }
    135 
    136     // 与Float相同,以上方法只会生成包含0.0d而不包含1.0d的随机数生成带有边界的Double随机数
    137     public static double getRandomForDoubleBounded(double min, double max) {
    138         double boundedDouble = min + new Random().nextDouble() * (max - min);
    139         System.out.println(boundedDouble);
    140         return boundedDouble;
    141     }
    142 
    143     // 使用Apache Common Math来生成有边界的Double随机数
    144     public static double getRandomForDoubleBounded2(double min, double max) {
    145         double boundedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble();
    146         double generatorDouble = min + boundedDouble * (max - min);
    147         System.out.println(generatorDouble);
    148         return generatorDouble;
    149     }
    150 
    151     // 使用Apache Common Lang生成有边界的Double随机数
    152     public static double getRandomForDoubleBounded3(double min, double max) {
    153         double generatedDouble = RandomUtils.nextDouble(min, max);
    154         System.out.println(generatedDouble);
    155         return generatedDouble;
    156     }
    157 
    158     // 使用ThreadLocalRandom生成有边界的Double随机数
    159     public static double getRandomForDoubleBounded4(double min, double max) {
    160         double generatedDouble = ThreadLocalRandom.current().nextDouble(min, max);
    161         System.out.println(generatedDouble);
    162         return generatedDouble;
    163     }
    164 }
     1 //相关依赖
     2         <dependency>
     3             <groupId>org.apache.commons</groupId>
     4             <artifactId>commons-lang3</artifactId>
     5             <version>3.3.2</version>
     6         </dependency>
     7         <!-- commons-math3 -->
     8         <dependency>
     9             <groupId>org.apache.commons</groupId>
    10             <artifactId>commons-math3</artifactId>
    11             <version>3.6.1</version>
    12         </dependency>        
  • 相关阅读:
    了解java注解
    使用java泛型设计通用方法
    dbutils基本使用
    jquery+ajax+struts2
    c3p0连接数据库的3种方式
    ASP单步调试工具
    设置网页图片不能被用户下载或者另存为
    简单树形菜单
    GBK,GB3212 Unicode编码问题详解
    html页面乱码问题解决方法编码批量转换
  • 原文地址:https://www.cnblogs.com/wang1001/p/9768029.html
Copyright © 2020-2023  润新知