当前位置:   article > 正文

Java中如何生成随机数的三种方法_java根据值进行随机数生成

java根据值进行随机数生成

Java中如何生成随机数?本篇文章就给大家介绍在Java中生成随机数的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
在Java中提供了三种使用一些内置方法和类生成随机数的方法,如下所示:

1、java.util.Random类

2、Math.random方法:可以生成double类型的随机数。

3、ThreadLocalRandom类

下面我们就来看看具体Java是如何实现随机数的生成。

1、java.util.Random类

Java 实用工具类库中的类:java.util.Random 提供了产生各种类型随机数的方法。

要使用java.util.Random类生成随机数,我们必须首先创建此类的实例,然后使用该实例调用nextInt(),nextDouble(),nextLong()等方法。

我们可以使用java.util.Random类随机生成:整数,浮点数,双精度数,长整数,布尔运算数等类型的随机数。

我们可以将参数传递给方法,以便在要生成的数字范围上放置上限。例如,nextInt(6)将生成0到5(包括0和5)范围内的数字。

// 随机数生成

// 使用java.util.Random;

import java.util.Random;

public class generateRandom{

public static void main(String args[]) 

{ 

    // 创建随机类的实例

    Random rand = new Random(); 



    // 在0到999范围内生成随机整数

    int rand_int1 = rand.nextInt(1000); 

    int rand_int2 = rand.nextInt(1000); 



    // 输出随机整数

    System.out.println("随机整数: "+rand_int1); 

    System.out.println("随机整数: "+rand_int2); 



    // 生成随机双精度数

    double rand_dub1 = rand.nextDouble(); 

    double rand_dub2 = rand.nextDouble(); 



    // 输出随机双精度数

    System.out.println("随机双精度数: "+rand_dub1); 

    System.out.println("随机双精度数: "+rand_dub2); 

} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

}

2、Math.random方法

Math类包含用于执行各种数值运算的各种方法,例如计算取幂,对数等。这其中的一个方法:random(),可以返回带有正号的double数,值大于或等于0.0且小于1.0 ,即取值范围是[0.0,1.0)的左闭右开区间。

random()方法返回的值是伪随机选择的,在[0.0,1.0)的范围内(近似)均匀分布。

注:它只能生成double类型的随机数。

下面我们就通过java代码介绍如何使用此方法产生随机数:

// Math.random() 生成随机数

import java.util.*;

public class generateRandom

{

public static void main(String args[]) 

{ 

    // 随机双精度数的生成

    System.out.println("随机双精度数: " + Math.random()); 

    System.out.println("随机双精度数: " + Math.random()); 

} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

}

3、java.util.concurrent.ThreadLocalRandom类

ThreadLocalRandom类是在java 1.7中引入的,提供并发产生随机数,能够解决多个线程发生的竞争争夺。可以生成整数,双精度,布尔等类型的随机数。

ThreadLocalRandom的主要实现细节:

1)、使用一个普通的long而不是使用Random中的AtomicLong作为seed

2)、不能自己创建ThreadLocalRandom实例,因为它的构造函数是私有的,我们可以使用它的静态方法ThreadLocalRandom.current()

3)、它是CPU缓存感知式的,使用8个long虚拟域来填充64位L1高速缓存行

下面我们就通过简单的java代码介绍如何使用这个类生成随机数:

// 随机数的产生

// 使用java.util.concurrent.ThreadLocalRandom类

import java.util.concurrent.ThreadLocalRandom;

public class generateRandom

{

public static void main(String args[]) 

{ 

    // 在0到999范围内生成随机整数

    int rand_int1 = ThreadLocalRandom.current().nextInt(); 

    int rand_int2 = ThreadLocalRandom.current().nextInt(); 



    // 输出随机整数

    System.out.println("Random Integers: " + rand_int1); 

    System.out.println("Random Integers: " + rand_int2); 



    // 生成随机双精度数

    double rand_dub1 = ThreadLocalRandom.current().nextDouble(); 

    double rand_dub2 = ThreadLocalRandom.current().nextDouble(); 



    // 输出随机双精度数

    System.out.println("Random Doubles: " + rand_dub1); 

    System.out.println("Random Doubles: " + rand_dub2); 



    // 生成随机布尔值

    boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean(); 

    boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean(); 



    // 输出随机布尔值

    System.out.println("Random Booleans: " + rand_bool1); 

    System.out.println("Random Booleans: " + rand_bool2); 

} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/106986
推荐阅读
相关标签
  

闽ICP备14008679号