Java – Random Long, Float, Integer and Double
这份快速教程将说明如何使用纯Java和Apache Commons Math库生成长篇小说。
本文是Baeldung上的" Java – Back to Basic"系列的一部分。
1.生成无限制的多头
让我们从生成Long开始:
1 2 3 4 | @Test public void givenUsingPlainJava_whenGeneratingRandomLongUnbounded_thenCorrect() { long generatedLong = new Random().nextLong(); } |
2.生成范围内的多头
2.1。纯Java随机长
接下来-让我们看一下创建一个随机有界Long-即在给定范围或间隔内的Long值:
1 2 3 4 5 6 | @Test public void givenUsingPlainJava_whenGeneratingRandomLongBounded_thenCorrect() { long leftLimit = 1L; long rightLimit = 10L; long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit)); } |
2.2。 Apache Commons Math随机长
让我们看一下使用更简洁的API和Commons Math生成随机Long的方法:
1 2 3 4 5 6 | @Test public void givenUsingApacheCommons_whenGeneratingRandomLongBounded_thenCorrect() { long leftLimit = 10L; long rightLimit = 100L; long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit); } |
3.生成一个无界整数
让我们继续前进,生成一个无界的随机整数:
1 2 3 4 | @Test public void givenUsingPlainJava_whenGeneratingRandomIntegerUnbounded_thenCorrect() { int generatedInteger = new Random().nextInt(); } |
如您所见,它几乎很接近生成一个long。
4.生成范围内的整数
4.1。纯Java的随机整数
下一个–给定范围内的随机整数:
1 2 3 4 5 6 | @Test public void givenUsingPlainJava_whenGeneratingRandomIntegerBounded_thenCorrect() { int leftLimit = 1; int rightLimit = 10; int generatedInteger = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); } |
4.2。带有Commons Math的随机整数
与Common Math相同:
1 2 3 4 5 6 | @Test public void givenUsingApache_whenGeneratingRandomIntegerBounded_thenCorrect() { int leftLimit = 1; int rightLimit = 10; int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit); } |
5.生成无限制的浮动
现在,让我们回顾一下生成随机浮点数–首先是无界的:
1 2 3 4 | @Test public void givenUsingPlainJava_whenGeneratingRandomFloatUnbouned_thenCorrect() { float generatedFloat = new Random().nextFloat(); } |
6.生成范围内的浮动
6.1。纯Java的随机浮动
还有一个有界的随机浮点数:
1 2 3 4 5 6 | @Test public void givenUsingPlainJava_whenGeneratingRandomFloatBouned_thenCorrect() { float leftLimit = 1F; float rightLimit = 10F; float generatedFloat = leftLimit + new Random().nextFloat() * (rightLimit - leftLimit); } |
6.2。与Commons Math随机浮动
现在-Commons Math的有界随机浮点数:
1 2 3 4 5 6 7 | @Test public void givenUsingApache_whenGeneratingRandomFloatBounded_thenCorrect() { float leftLimit = 1F; float rightLimit = 10F; float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat(); float generatedFloat = leftLimit + randomFloat * (rightLimit - leftLimit); } |
7.生成无限制的双精度
7.1。纯Java随机无界双
最后,我们将生成随机双精度值,首先,使用Java Math API:
1 2 3 4 | @Test public void givenUsingPlainJava_whenGeneratingRandomDoubleUnbounded_thenCorrect() { double generatedDouble = Math.random(); } |
7.2。具有Commons Math的随机无界双
以及Apache Commons Math库的随机double值:
1 2 3 4 | @Test public void givenUsingApache_whenGeneratingRandomDoubleUnbounded_thenCorrect() { double generatedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble(); } |
8.生成范围内的双精度
8.1。纯Java的随机有界双
在此示例中,让我们看一下在一个间隔内使用Java生成的随机双精度数:
1 2 3 4 5 6 | @Test public void givenUsingPlainJava_whenGeneratingRandomDoubleBounded_thenCorrect() { double leftLimit = 1D; double rightLimit = 10D; double generatedDouble = leftLimit + new Random().nextDouble() * (rightLimit - leftLimit); } |
8.2。具有Commons Math的随机有界双
最后,使用Apache Commons Math库,在一定间隔内随机增加一倍:
1 2 3 4 5 6 | @Test public void givenUsingApache_whenGeneratingRandomDoubleBounded_thenCorrect() { double leftLimit = 1D; double rightLimit = 100D; double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit); } |
到那里,您可以找到快速而准确的示例,说明如何为Java中最常见的数字基元生成无界值和有界值。
9.结论
本教程说明了如何使用不同的技术和库来生成有界或无界的随机数。
与往常一样,所有这些示例和代码片段的实现都可以在GitHub项目中找到。这是一个基于Maven的项目,因此应该易于导入和运行。