Java 随机

Java 随机类用于生成一系列随机数。

Java 随机类

  • Random 类是 java.util 包的一部分
  • Java 随机类的实例用于生成随机数
  • 这个类提供了几种方法来生成随机数的类型整数,双,长,浮动等
  • 随机数生成算法对种子值工作。如果没有提供,则从系统纳米时间 创建种子值
  • 如果两个随机实例具有相同的种子值,那么它们将生成相同的随机数序列
  • Java 随机数类是线安全的,但是在多线环境中建议使用java `.util.concurrent.ThreadLoc

Java Random Class, Random Class in Java

Java 随机构建

Java 随机类有两个构建器,以下是:

  1. Random():创建新的随机生成器
  2. Random(长种子):使用指定种子 创建新的随机生成器

Java 随机类方法

让我们来看看 Java 随机类的一些方法。

  1. nextBoolean(): 此方法返回下一个pseudorandom,这是来自随机数生成序列的Boolean值
  2. nextDouble(): 此方法返回下一个pseudorandom,即在 0.0 和 1.0. 之间的双值。3. nextFloat(): 此方法返回下一个pseudorandom,即在 0.0 和 1.0. 之间的浮动值。

Java 随机示例

让我们来看看下面的Java随机示例程序。

 1package com.journaldev.examples;
 2
 3import java.util.Random;
 4
 5/**
 6 * Java Random Number Example Program
 7 * 
 8 */
 9public class RandomNumberExample {
10
11    public static void main(String[] args) {
12    	
13    	//initialize random number generator
14    	Random random = new Random();
15    	
16    	//generates boolean value
17    	System.out.println(random.nextBoolean());
18    	
19    	//generates double value
20    	System.out.println(random.nextDouble());
21    	
22    	//generates float value
23    	System.out.println(random.nextFloat());
24    	
25    	//generates int value
26    	System.out.println(random.nextInt());
27    	
28    	//generates int value within specific limit
29    	System.out.println(random.nextInt(20));
30
31    }
32
33}

上述方案的结果是:

1false
20.30986869120562854
30.6210066
4-1348425743
518

查看此帖子更多关于 [Java Radom 号码生成]( / 社区 / 教程 / random-number-generator-java)。

使用种子生成随机号码

有两种方法可以使用种子生成随机数。

1Random random = new Random(long seed);
2
3Random random1 = new Random();
4random1.setSeed(seed);

种子是由方法 next(int)维持的 pseudorandom 数字生成器内部状态的初始值。

 1package com.journaldev.examples;
 2
 3import java.util.Random;
 4
 5/**
 6 * Java Random Number Using Seed Example Program
 7 * 
 8 * @author pankaj
 9 *
10 */
11public class RadomSeedExample {
12
13    public static void main(String[] args) {
14    	
15    	//using constructor
16    	Random random = new Random(100);
17    	System.out.println("Using Constructor");
18    	System.out.println(random.nextInt());
19    	
20    	//using method
21    	Random random2 = new Random();
22    	random2.setSeed(200);
23    	System.out.println("Using Method");
24    	System.out.println(random2.nextInt());
25    }
26}

上述方案的结果是:

1Using Constructor
2-1193959466
3Using Method
4-1133938638

如果我们将相同的种子传递给两个不同的随机数生成器呢?让我们看看下面的程序,看看如果我们将相同的种子传递给两个不同的随机数生成器会发生什么。

 1package com.journaldev.examples;
 2
 3import java.util.Random;
 4
 5/**
 6 * Java Random Number Using Same Seed Example Program
 7 * 
 8 */
 9public class RandomNumberSameSeedExample {
10
11    public static void main(String[] args) {
12    	
13    	//initialize two random number generators using same seed
14    	Random random1 = new Random(100);
15    	Random random2 = new Random(100);
16    	
17    	System.out.println(random1.nextInt());
18    	System.out.println(random2.nextInt());
19
20    }
21
22}

上述方案的结果是:

1-1193959466
2-1193959466

我们可以看到,如果我们将相同的种子传递给两个不同的随机数生成器,它将生成相同的随机数。

Java 8 随机类方法

正如你可以从上面的图像中看到的,在Java 8中添加了许多新方法,这些方法可以产生随机数的流程。

 1package com.journaldev.random;
 2
 3import java.util.Random;
 4import java.util.stream.IntStream;
 5
 6public class JavaRandomExample {
 7
 8    public static void main(String[] args) {
 9
10    	Random random = new Random();
11
12    	// generate stream of 5 ints between 1 to 100
13    	IntStream ints = random.ints(5, 1, 100);
14
15    	ints.forEach(System.out::println);
16    }
17
18}

java random number, java random int stream That's all for a quick roundup on Java Random Class. Reference: API Doc

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