Java-随机数⼯具类  1import java.util.Random;
2import urrent.ThreadLocalRandom;
3import org.apachemons.lang3.RandomUtils;
4import org.apachemons.math3.random.RandomDataGenerator;
5
6/**
7 * @ClassName: RandomUtil
8 * @Description: 随机数⼯具类
9 * (分别使⽤java.util.Random、Apache Common Math3、Apache Common Lang3、TreadLocalRandom)
10*/
11public class RandomUtil {
12/**
13    * 随机数Int的⽣成
java生成随机数的方法
14*/
15// 随机数⽣成⽆边界的Int
16public static int getRandomForIntegerUnbounded() {
17int intUnbounded = new Random().nextInt();
18        System.out.println(intUnbounded);
19return intUnbounded;
20    }
21
22// ⽣成有边界的Int
23public static int getRandomForIntegerBounded(int min, int max) {
24int intBounded = min + ((int) (new Random().nextFloat() * (max - min)));
25        System.out.println(intBounded);
26return intBounded;
27    }
28
29// 包含1⽽不包含10
30// 使⽤Apache Common Math3来⽣成有边界的Int
31public static int getRandomForIntegerBounded2(int min, int max) {
32int intBounded = new RandomDataGenerator().nextInt(min, max);
33        System.out.println(intBounded);
34return intBounded;
35    }
36
37// 包含1且包含10
38// 使⽤Apache Common Lang3的⼯具类来⽣成有边界的Int
39public static int getRandomForIntegerBounded3(int min, int max) {
40int intBounded = Int(min, max);
41        System.out.println(intBounded);
42return intBounded;
43    }
44
45// 使⽤TreadLocalRandom来⽣成有边界的Int,包含min⽽不包含max
46public static int getRandomForIntegerBounded4(int min, int max) {
47int threadIntBound = ThreadLocalRandom.current().nextInt(min, max);
48        System.out.println(threadIntBound);
49return threadIntBound;
50    }
51
52/**
53    * 随机数Long的⽣成
54*/
55// 随机数⽣成⽆边界的Long
56public static long getRandomForLongUnbounded() {
57long unboundedLong = new Random().nextLong();
58        System.out.println(unboundedLong);
59return unboundedLong;
60    }
61
62// 因为Random类使⽤的种⼦是48bits,所以nextLong不能返回所有可能的long值,long是64bits。
63// 使⽤Random⽣成有边界的Long
64public static long getRandomForLongBounded(long min, long max) {
65long rangeLong = min + (((long) (new Random().nextDouble() * (max - min))));
66        System.out.println(rangeLong);
67return rangeLong;
68    }
69
70// 使⽤Apache Commons Math3来⽣成有边界的Long(RandomDataGenerator类提供的⽣成随机数的⽅法)
71public static long getRandomForLongBounded2(long min, long max) {
72long rangeLong = new RandomDataGenerator().nextLong(min, max);
73        System.out.println(rangeLong);
74return rangeLong;
75    }
76
77// 使⽤Apache Commons Lang3的⼯具类来⽣成有边界的Long(RandomUtils提供了对java.util.Random的补充) 78public static long getRandomForLongBounded3(long min, long max) {
79long longBounded = Long(min, max);
80        System.out.println(longBounded);
81return longBounded;
82    }
83
84// 使⽤ThreadLocalRandom⽣成有边界的Long
85public static long getRandomForLongBounded4(long min, long max) {
86long threadLongBound = ThreadLocalRandom.current().nextLong(min, max);
87        System.out.println(threadLongBound);
88return threadLongBound;
89    }
90
91/**
92    * 随机数Float的⽣成
93*/
94// 随机数Float的⽣成⽣成0.0-1.0之间的Float随机数
95public static float getRandomForFloat0To1() {
96float floatUnbounded = new Random().nextFloat();
97        System.out.println(floatUnbounded);
98return floatUnbounded;
99    }
100
101// 以上只会⽣成包含0.0⽽不包括1.0的float类型随机数⽣成有边界的Float随机数
102public static float getRandomForFloatBounded(float min, float max) {
103float floatBounded = min + new Random().nextFloat() * (max - min);
104        System.out.println(floatBounded);
105return floatBounded;
106    }
107
108// 使⽤Apache Common Math来⽣成有边界的Float随机数
109public static float getRandomForFloatBounded2(float min, float max) {
110float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat();
111float generatedFloat = min + randomFloat * (max - min);
112        System.out.println(generatedFloat);
113return generatedFloat;
114    }
115
116// 使⽤Apache Common Lang来⽣成有边界的Float随机数
117public static float getRandomForFloatBounded3(float min, float max) {
118float generatedFloat = Float(min, max);
119        System.out.println(generatedFloat);
120return generatedFloat;
121    }
122
123// 使⽤ThreadLocalRandom⽣成有边界的Float随机数
124// ThreadLocalRandom类没有提供
125
126/**
127    * 随机数Double的⽣成
128*/
129// ⽣成0.0d-1.0d之间的Double随机数
130public static double getRandomForDouble0To1() {
131double generatorDouble = new Random().nextDouble();
132        System.out.println(generatorDouble);
133return generatorDouble;
134    }
135
136// 与Float相同,以上⽅法只会⽣成包含0.0d⽽不包含1.0d的随机数⽣成带有边界的Double随机数137public static double getRandomForDoubleBounded(double min, double max) {
138double boundedDouble = min + new Random().nextDouble() * (max - min);
139        System.out.println(boundedDouble);
140return boundedDouble;
141    }
142
143// 使⽤Apache Common Math来⽣成有边界的Double随机数
144public static double getRandomForDoubleBounded2(double min, double max) {
145double boundedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble(); 146double generatorDouble = min + boundedDouble * (max - min);
147        System.out.println(generatorDouble);
148return generatorDouble;
149    }
150
151// 使⽤Apache Common Lang⽣成有边界的Double随机数
152public static double getRandomForDoubleBounded3(double min, double max) {
153double generatedDouble = Double(min, max);
154        System.out.println(generatedDouble);
155return generatedDouble;
156    }
157
158// 使⽤ThreadLocalRandom⽣成有边界的Double随机数
159public static double getRandomForDoubleBounded4(double min, double max) {
160double generatedDouble = ThreadLocalRandom.current().nextDouble(min, max);
161        System.out.println(generatedDouble);
162return generatedDouble;
163    }
164 }
1//相关依赖
2        <dependency>
3            <groupId>org.apachemons</groupId>
4            <artifactId>commons-lang3</artifactId>
5            <version>3.3.2</version>
6        </dependency>
7        <!-- commons-math3 -->
8        <dependency>
9            <groupId>org.apachemons</groupId>
10            <artifactId>commons-math3</artifactId>
11            <version>3.6.1</version>
12        </dependency>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。