我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java生成范围内随机整数的三种方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java生成范围内随机整数的三种方法

前言

在本文中,我们将向您展示三种生成范围内随机整数的方法。

  • java.util.Random.nextInt
  • 数学随机
  • java.util.Random.ints(Java 8)

1. java.util.Random

此Random().nextInt(int bound)生成一个从0(含)到bound( Random().nextInt(int bound)的随机整数。

1.1代码段。 对于getRandomNumberInRange(5, 10) ,这将生成一个介于5(含)和10(含)之间的随机整数。

private static int getRandomNumberInRange(int min, int max) {
        if (min >= max) {
            throw new IllegalArgumentException("max must be greater than min");
        }
 
        Random r = new Random();
        return r.nextInt((max - min) + 1) + min;
    }

1.2什么是(max – min)+ 1)+ min?

上面的公式将在min(含)和max(含)之间生成一个随机整数。

//Random().nextInt(int bound) = Random integer from 0 (inclusive) to bound (exclusive)
    
    //1. nextInt(range) = nextInt(max - min)
    new Random().nextInt(5);  // [0...4] [min = 0, max = 4]
    new Random().nextInt(6);  // [0...5]
    new Random().nextInt(7);  // [0...6]
    new Random().nextInt(8);  // [0...7]
    new Random().nextInt(9);  // [0...8]
    new Random().nextInt(10); // [0...9]            
    new Random().nextInt(11); // [0...10]
    
    //2. To include the last value (max value) = (range + 1)
    new Random().nextInt(5 + 1)  // [0...5] [min = 0, max = 5]
    new Random().nextInt(6 + 1)  // [0...6]
    new Random().nextInt(7 + 1)  // [0...7]
    new Random().nextInt(8 + 1)  // [0...8]
    new Random().nextInt(9 + 1)  // [0...9]
    new Random().nextInt(10 + 1) // [0...10]            
    new Random().nextInt(11 + 1) // [0...11]
    
    //3. To define a start value (min value) in a range,
    //   For example, the range should start from 10 = (range + 1) + min
    new Random().nextInt(5 + 1)  + 10 // [0...5]  + 10 = [10...15]
    new Random().nextInt(6 + 1)  + 10 // [0...6]  + 10 = [10...16]
    new Random().nextInt(7 + 1)  + 10 // [0...7]  + 10 = [10...17]
    new Random().nextInt(8 + 1)  + 10 // [0...8]  + 10 = [10...18]
    new Random().nextInt(9 + 1)  + 10 // [0...9]  + 10 = [10...19]
    new Random().nextInt(10 + 1) + 10 // [0...10] + 10 = [10...20]
    new Random().nextInt(11 + 1) + 10 // [0...11] + 10 = [10...21]
    
    // Range = (max - min)
    // So, the final formula is ((max - min) + 1) + min
    
    //4. Test [10...30]
    // min = 10 , max = 30, range = (max - min)
    new Random().nextInt((max - min) + 1) + min
    new Random().nextInt((30 - 10) + 1) + 10
    new Random().nextInt((20) + 1) + 10
    new Random().nextInt(21) + 10    //[0...20] + 10 = [10...30]
    
    //5. Test [15...99]
    // min = 15 , max = 99, range = (max - min)
    new Random().nextInt((max - min) + 1) + min
    new Random().nextInt((99 - 15) + 1) + 15
    new Random().nextInt((84) + 1) + 15
    new Random().nextInt(85) + 15    //[0...84] + 15 = [15...99]
    
    //Done, understand?

1.3完整示例生成10个随机整数,范围在5(含)和10(含)之间。

TestRandom.java

package com.mkyong.example.test;
import java.util.Random;
public class TestRandom {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(getRandomNumberInRange(5, 10));
        }
 
    }
 
    private static int getRandomNumberInRange(int min, int max) {
        if (min >= max) {
            throw new IllegalArgumentException("max must be greater than min");
        }
 
        Random r = new Random();
        return r.nextInt((max - min) + 1) + min;
    }
}

输出。

7
6
10
8
9
5
7
10
8
5

2.数学随机

此Math.random()给出从0.0(含)到1.0( Math.random()的随机双Math.random() 。

2.1代码段。 参考1.2,或多或少是相同的公式。

(int)(Math.random() * ((max - min) + 1)) + min

2.2完整示例生成10个随机整数,范围在16(含)和20(含)之间。

TestRandom.java
package com.mkyong.example.test;
public class TestRandom {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(getRandomNumberInRange(16, 20));
        }
    }
 
    private static int getRandomNumberInRange(int min, int max) {
        if (min >= max) {
            throw new IllegalArgumentException("max must be greater than min");
        }
        return (int)(Math.random() * ((max - min) + 1)) + min;
    }
}

输出。

17
16
20
19
20
20
20
17
20
16

注意

请阅读Oracle论坛帖子 , Random.nextInt(n)比Math.random() * n更有效。

3. Java 8 Random.ints

在Java 8中,在java.util.Random中添加了新方法

public IntStream ints(int randomNumberOrigin, int randomNumberBound)
    public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)

此Random.ints(int origin, int bound)或Random.ints(int min, int max)生成一个从原点(包含)到bound(不包含)的随机整数。

3.1代码段。

private static int getRandomNumberInRange(int min, int max) {
        Random r = new Random();
        return r.ints(min, (max + 1)).findFirst().getAsInt();
    }

3.2完整示例生成10个随机整数,范围在33(含)和38(含)之间。

TestRandom.java
package com.mkyong.form.test;
import java.util.Random;
public class TestRandom {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(getRandomNumberInRange(33, 38));
        }
    }
 
    private static int getRandomNumberInRange(int min, int max) {
        Random r = new Random();
        return r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();
    }
}

输出。

34
35
37
33
38
37
34
35
36
37

3.3额外内容,仅供参考。

生成介于33(含)和38(不含)之间的随机整数,流大小为10。并使用forEach打印出项目。

//Java 8 only
    new Random().ints(10, 33, 38).forEach(System.out::println);

输出。

34
37
37
34
34
35
36
33
37
34

参考文献

  1. java.util.Random JavaDoc
  2. java.lang.Math JavaDoc
  3. Oracle论坛:随机数生成
  4. 在JavaScript中生成加权随机数

翻译自: https://mkyong.com/java/java-generate-random-integers-in-a-range/

总结

到此这篇关于Java生成范围内随机整数的三种方法的文章就介绍到这了,更多相关Java生成随机整数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java生成范围内随机整数的三种方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java生成指定范围内的一个随机整数2种方式

本文主要介绍了Java生成指定范围内的一个随机整数2种方式,主要使用Math.random()和Random.nextInt()这两种,具有一定的参考价值,感兴趣的可以了解一下
2023-05-17

java生成随机数的三种方法

随机数有三种生成方式:1、通过Math.random()方法2、通过System.currentTimeMillis()方法获取毫秒数3、通过Random类第一种:常用方法Math.random()方法,是获取0-1之间的double类型的小数,在通过int类
java生成随机数的三种方法
2014-08-11

java生成指定范围随机数的多种代码

生成指定范围内的随机数这个是最常用的技术之一,程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于:如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100
2023-05-31

java的三种随机数生成方式

随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:第一种:new Random()第二种:Math.random()第三种:currentTimeMillis()第一种需要借助java.util.Random类来产生
java的三种随机数生成方式
2015-06-20

使用java在生成一个指定范围的随机整数

使用java在生成一个指定范围的随机整数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web
2023-06-14

java如何生成一定范围的随机数

在Java中,可以使用`java.util.Random`类来生成一定范围的随机数。下面是一种常用的方法:1. 创建一个`Random`对象:```javaRandom random = new Random();```2. 使用`next
2023-08-24

java怎么生成指定范围的随机小数

在Java中,可以使用`java.util.Random`类来生成随机小数。下面是一个示例代码,演示如何生成指定范围的随机小数:```javaimport java.util.Random;public class RandomDecima
2023-08-18

如何在 Golang 中生成指定范围的随机整数?

在 golang 中,使用 rand 包中的 intn 函数可生成指定范围的随机整数。其语法为 func intn(n int) int,其中 n 是不含在内的随机整数上限。通过设置随机数种子并使用 intn(100) + 1,可以生成一个
如何在 Golang 中生成指定范围的随机整数?
2024-05-13

Java编程实现生成给定范围内不重复随机数的方法小结

本文实例总结了Java编程实现生成给定范围内不重复随机数的方法。分享给大家供大家参考,具体如下:在Java中的Math类中存在一个random()方法,该方法默认生成0.0到1.0之间的double型随机数;经过稍微处理,就可以产生我们需要
2023-05-31

Java编程实现从给定范围内随机N个不重复数生成随机数的方法小结

本文实例讲述了Java编程实现从给定范围内随机N个不重复数生成随机数的方法。分享给大家供大家参考,具体如下:一、JAVA中生成随机数的方式1、在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其
2023-05-31

java中生成不同随机数的三种方式

java中产生随机数的方法主要有三种:1、new Random()2、Math.random()3、currentTimeMillis()第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()
java中生成不同随机数的三种方式
2016-06-23

Python编程实现生成特定范围内不重复多个随机数的2种方法

本文实例讲述了Python编程实现生成特定范围内不重复多个随机数的2种方法。分享给大家供大家参考,具体如下: 在近期进行的一个实验中,需要将数据按一定比例随机分割为两个部分。这一问题的核心其实就是产生不重复随机数的问题。首先想到的递归的方法
2022-06-04

Java 生成随机数的 5 种方式

1. 使用Math类的random()方法生成0到1之间的随机数:```javadouble randomNum = Math.random();```2. 使用Random类的nextInt()方法生成指定范围内的随机整数:```java
2023-09-20

java随机数生成的方法

本文小编为大家详细介绍“java随机数生成的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“java随机数生成的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本教程操作环境:windows7系统、java
2023-06-30

java生成随机字符串的两种方法

本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下import java.util.Random;public class CharacterUtils {//方法1:length为产生的位数 public s
2023-05-31

java生成不重复随机数的方法

Java中产生随机数1、调用java.lang下面Math类中的random()方法产生随机数新建一个文件后缀名为java的文件,文件名取为MyRandom,该类中编写如下的代码:public class MyRandom {public static voi
java生成不重复随机数的方法
2016-11-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录