java随机数

Java Random class is used to generate a series of random numbers.

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

Java随机类 (Java Random Class)

  • Random class is part of java.util package.Random类是java.util包的一部分。
  • An instance of java Random class is used to generate random numbers.java Random类的一个实例用于生成随机数。
  • This class provides several methods to generate random numbers of type integer, double, long, float etc.此类提供了几种生成整数,双精度,长整型,浮点型等随机数的方法。
  • Random number generation algorithm works on the seed value. If not provided, seed value is created from system nano time.随机数生成算法对种子值起作用。 如果未提供,则从系统纳米时间创建种子值。
  • If two Random instances have same seed value, then they will generate same sequence of random numbers.如果两个随机实例具有相同的种子值,则它们将生成相同的随机数序列。
  • Java Random class is thread-safe, however in multithreaded environment it’s advised to use java.util.concurrent.ThreadLocalRandom class.Java Random类是线程安全的,但是在多线程环境中,建议使用java.util.concurrent.ThreadLocalRandom类。
  • Random class instances are not suitable for security sensitive applications, better to use java.security.SecureRandom in those cases.随机类实例不适用于对安全敏感的应用程序,在这种情况下最好使用java.security.SecureRandom

Java随机构造函数 (Java Random Constructors)

Java Random class has two constructors which are given below:

Java Random类具有两个构造函数,如下所示:

  1. Random(): creates new random generatorRandom() :创建新的随机数生成器
  2. Random(long seed): creates new random generator using specified seedRandom(long seed) :使用指定的种子创建新的随机生成器

Java随机类方法 (Java Random Class Methods)

Let’s have a look at some of the methods of java Random class.

让我们看一下Java Random类的一些方法。

  1. nextBoolean(): This method returns next pseudorandom which is a boolean value from random number generator sequence.nextBoolean() :此方法返回下一个伪随机数,它是随机数生成器序列中的布尔值。
  2. nextDouble(): This method returns next pseudorandom which is double value between 0.0 and 1.0.nextDouble() :此方法返回下一个伪随机数,该伪随机数是0.0到1.0之间的双精度值。
  3. nextFloat(): This method returns next pseudorandom which is float value between 0.0 and 1.0.nextFloat() :此方法返回下一个伪随机数,该伪随机数是介于0.0和1.0之间的float值。
  4. nextInt(): This method returns next int value from random number generator sequence.nextInt() :此方法从随机数生成器序列返回下一个int值。
  5. nextInt(int n): This method return a pseudorandom which is int value between 0 and specified value from random number generator sequence.nextInt(int n):此方法返回一个伪随机数,它是介于0和随机数生成器序列中指定值之间的int值。

Java随机示例 (Java Random Example)

Let’s have a look at the below java Random example program.

让我们看一下下面的Java Random示例程序。

package com.journaldev.examples;import java.util.Random;/*** Java Random Number Example Program* */
public class RandomNumberExample {public static void main(String[] args) {//initialize random number generatorRandom random = new Random();//generates boolean valueSystem.out.println(random.nextBoolean());//generates double valueSystem.out.println(random.nextDouble());//generates float valueSystem.out.println(random.nextFloat());//generates int valueSystem.out.println(random.nextInt());//generates int value within specific limitSystem.out.println(random.nextInt(20));}}

Output of the above program is:

上面程序的输出是:

false
0.30986869120562854
0.6210066
-1348425743
18

Check this post for more about Java Radom Number Generation.

查看这篇文章,了解有关Java Radom Number Generation的更多信息。

使用种子生成随机数 (Generate Random Number using Seed)

There are two ways we can generate random number using seed.

我们可以通过两种方式使用种子生成随机数。

Random random = new Random(long seed);Random random1 = new Random();
random1.setSeed(seed);

The seed is the initial value of the internal state of the pseudorandom number generator which is maintained by method next(int).

种子是通过方法next(int)维护的伪随机数生成器内部状态的初始值。

package com.journaldev.examples;import java.util.Random;/*** Java Random Number Using Seed Example Program* * @author pankaj**/
public class RadomSeedExample {public static void main(String[] args) {//using constructorRandom random = new Random(100);System.out.println("Using Constructor");System.out.println(random.nextInt());//using methodRandom random2 = new Random();random2.setSeed(200);System.out.println("Using Method");System.out.println(random2.nextInt());}
}

Output of the above program is:

上面程序的输出是:

Using Constructor
-1193959466
Using Method
-1133938638

What if we pass same seed to two different random number generators?

如果我们将相同的种子传递给两个不同的随机数生成器怎么办?

Let’s have a look at the below program and see what happen if we pass same seed to two different random number generators.

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

package com.journaldev.examples;import java.util.Random;/*** Java Random Number Using Same Seed Example Program* */
public class RandomNumberSameSeedExample {public static void main(String[] args) {//initialize two random number generators using same seedRandom random1 = new Random(100);Random random2 = new Random(100);System.out.println(random1.nextInt());System.out.println(random2.nextInt());}}

Output of the above program is:

上面程序的输出是:

-1193959466
-1193959466

We can see that it will generate same random number if we pass same seed to two different random number generators.

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

Java 8随机类方法 (Java 8 Random Class Methods)

As you can see from above image, there are many new methods added in Java 8 to Random class. These methods can produce a stream of random numbers. Below is a simple program to generate a stream of 5 integers between 1 and 100.

从上图可以看到,Java 8中为Random类添加了许多新方法。 这些方法可以产生随机数流。 下面是一个简单的程序,用于生成1到100之间的5个整数的流。

package com.journaldev.random;import java.util.Random;
import java.util.stream.IntStream;public class JavaRandomExample {public static void main(String[] args) {Random random = new Random();// generate stream of 5 ints between 1 to 100IntStream ints = random.ints(5, 1, 100);ints.forEach(System.out::println);}}

That’s all for a quick roundup on Java Random Class.

这就是Java随机类的快速汇总。

Reference: API Doc

参考: API文档

翻译自: https://www.journaldev.com/17111/java-random

java随机数

java随机数_Java随机相关推荐

  1. JAVA随机数真的随机吗?

    随机数 java的随机数真的非常易于使用.它可以让你模拟准确的统计样本.实现加密算法,最重要的是,你可以不假思索地使用.在Java中,访问随机数的常用方法是通过一个名为 java.util.Rando ...

  2. java 姓名_java 随机生成中文姓名人名

    public static void main(String[] args) { for(int i=0;i<50;i++){ System.out.println(generateName() ...

  3. java随机数转换_Java获取随机数的3种方法(转)

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  4. java 获取区间随机数_Java获取随机数

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  5. java随机数抽奖系统_Java实现游戏抽奖的算法

    Java实现游戏抽奖的算法 发布时间:2020-05-29 13:27:44 来源:亿速云 阅读:282 作者:鸽子 Java开发游戏抽奖算法主要有随机数一一对应.离散法Alias算法等. 一.随机数 ...

  6. java 获取区间随机数_Java获取随机数的3种方法

    主要介绍了Java获取随机数的3种方法,主要利用random()函数来实现 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1))例: (int)(1+Math.rando ...

  7. java中的随机数_Java获取随机数

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  8. java 获取区间随机数_Java获取随机数的几种方法

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  9. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众

    本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...

最新文章

  1. 苹果8如何设置锁屏无线网连接服务器,iPhone8屏幕解锁怎么设置?苹果iPhone8与8 Plus解锁四种方法...
  2. 新手小白零基础搭建个人博客(二)Hexo搭建
  3. 网站建设——从无到有
  4. shared_ptr智能指针源码剖析
  5. apk转换ipa在线转换工具_PDF 格式转换在线网站
  6. 刚刚,改造了下BaseDao……
  7. 【转】深入理解Windows消息机制
  8. 我去,这几个Linux指令太装B了|动图展示
  9. nfc修改饭卡软件下载_你还要什么校园卡?有NFC不就够了
  10. 【vue开发问题-解决方法】(一)在style中设置background-image时路径问题
  11. 1056 组合数的和 (15 分)—PAT (Basic Level) Practice (中文)
  12. 常用日期格式符(表格)
  13. mysql批量插入优化
  14. 使用shinydashboard编写高级UI页面(1)
  15. MP算法和OMP算法及其思想与实现
  16. 无法退休的董小姐?董明珠继任格力董事长
  17. 微信小程序_(2022)微信小程序开发者后台管理登录/开发成员管理/开发设置中设置(云)服务器/数据拉取权限配置/appID查看/邮箱修改
  18. Windows Xp Sp3官方简体中文版(原版) 纯净安装版 百度网盘下载
  19. 俩年的这五十篇技术博客,送给不忘初心的你。
  20. Xshell远程连接服务器上的jupyter notebook

热门文章

  1. (转)python3 安装 BeautifulSoup 提示 Unit tests have failed!
  2. [转载] 使用python 中的numpy创建数组
  3. 浅入深出Vue:事件处理
  4. gitlab git 安装
  5. 当网卡收到的包的目的地址是主机上另一个网卡的地址.arp总结
  6. mybatis 调用存储过程
  7. Java——Map 集合
  8. JavaSE 学习笔记之正则表达式(二十五)
  9. Centos6.x 64位 安装JDK
  10. 配置Log4j(很详细)1