Java 中的随机数生成器

今天我们将看看如何在Java中生成随机数。有时我们需要在Java程序中生成随机数。例如,一个数字游戏或生成随机密钥ID进行加密等。

Java 中的随机数字生成器

random number generator java There are many ways to generate a random number in java.

  1. java.util.Random类可以用来创建随机数。它提供了几种方法来生成随机整数、长、双等 2.我们也可以使用 Math.random()来生成双数。这种方法内部使用Java随机数
  2. java.util.concurrent.ThreadLocalRandom类应该用来在多线环境中生成随机数。这个类是Java Concurrent/Java-math-class(/community/tutorials/multithreading-in-java)包的一部分,并在Java 1.7中引入。这个类有类

Java 随机号码生成器

让我们看看一些例子来生成一个随机数在Java. 后来,我们也将看看ThreadLocalRandom和SecureRandom示例程序。

创建随机整数

1Random random = new Random();
2
3int rand = random.nextInt();

当我们创建随机实例时,它会产生一个长的种子值,用于所有nextXXX方法调用。

1//set the long seed value using Random constructor
2Random random = new Random(123456789);
3
4//set long seed value using setter method
5Random random1 = new Random();
6random1.setSeed(1234567890);

Java 随机数 1 到 10

有时我们必须在一个范围之间生成随机数字,例如,在一个数字游戏中,可能的值只能在1到6之间。

1Random random = new Random();
2int rand = 0;
3while (true){
4    rand = random.nextInt(11);
5    if(rand !=0) break;
6}
7System.out.println(rand);

nextInt(int x)中的参数被排除在外,所以我们必须提供参数为11;此外,0也包含在生成的随机数中,所以我们必须继续调用 nextInt 方法,直到我们得到 1 和 10 之间的值。

3、偶然生成双重

我们可以使用‘Math.random()’或随机类‘nextDouble’方法在Java中生成随机双数。

1Random random = new Random();
2
3double d = random.nextDouble();
4
5double d1 = Math.random();

4、创建随机浮动

1Random random = new Random();
2
3float f = random.nextFloat();

第五章 长久的随机

1Random random = new Random();
2
3long l = random.nextLong();

创建随机布尔

1Random random = new Random();
2
3boolean flag = random.nextBoolean();

创建随机字节数组

我们可以生成随机字节并将其放置到用户提供的字节数组中,使用随机类别. 生成的随机字节的数量等于字节数组的长度。

1Random random = new Random();
2
3byte[] randomByteArray = new byte[5];
4
5random.nextBytes(randomByteArray);
6
7System.out.println(Arrays.toString(randomByteArray)); // sample output [-70, -57, 74, 99, -78]

8. 多线环境中的 ThreadLocalRandom

以下是一個簡單的例子,顯示在多線環境中使用 ThreadLocalRandom。

 1package com.journaldev.randomnumber;
 2
 3import java.util.Random;
 4import java.util.concurrent.ThreadLocalRandom;
 5
 6public class ThreadLocalRandomExample {
 7
 8    public static void main(String[] args) {
 9    	Runnable runnable = new MyRunnable();
10
11    	for (int i = 0; i < 5; i++) {
12    		Thread t = new Thread(runnable);
13    		t.setName("MyRunnable-Thread-" + i);
14    		t.start();
15    	}
16    }
17
18}
19
20class MyRunnable implements Runnable {
21
22    @Override
23    public void run() {
24    	String threadName = Thread.currentThread().getName();
25    	System.out.println(threadName + "::" + ThreadLocalRandom.current().nextInt());
26    }
27
28}

下面是我对上面的程序执行的样本输出。

1MyRunnable-Thread-0::-1744088963
2MyRunnable-Thread-3::139405798
3MyRunnable-Thread-1::1403710182
4MyRunnable-Thread-2::-1222080205
5MyRunnable-Thread-4::-185825276

We can't set seed value for ThreadLocalRandom instance, it will throw UnsupportedOperationException. ThreadLocalRandom example ThreadLocalRandom class also has some extra utility methods to generate a random number within a range. For example, to generate a random number between 1 and 10, we can do it like below.

1ThreadLocalRandom random = ThreadLocalRandom.current();
2    	
3int rand = random.nextInt(1, 11);

ThreadLocalRandom 有类似的方法来生成随机长和双值。

9、安全例子

您可以使用 SecureRandom 类来使用列出的任何提供商生成更安全的随机号码。

1Random random = new SecureRandom();
2
3int rand = random.nextInt();
4
5System.out.println(rand);

这是关于在Java程序中生成随机数。

您可以从我们的 GitHub 存储库下载示例代码。

Published At
Categories with 技术
Tagged with
comments powered by Disqus