Java代码信息

运行结果
教程手册
代码仓库
点击编辑器上方的运行按钮,会在此处显示运行结果。
以下是用户最新保存的代码
test test 发布于:2020-08-15 21:24 API random (摇塞子游戏) 发布于:2020-08-13 15:46 主函数-- 发布于:2020-08-10 17:17 主函数-- 发布于:2020-08-10 17:16 主函数-- 发布于:2020-08-10 17:16 定义类-学生-继承自人类 发布于:2020-08-10 17:11 自动截取日本名称 发布于:2020-08-08 12:10 Base64 发布于:2020-08-07 14:37 池塘问题,待修改 发布于:2020-08-10 14:36 自动截取日本名称 发布于:2020-08-08 11:57 API random (摇塞子游戏) 发布于:2020-08-06 15:05 Nginx log escape 发布于:2020-08-07 15:55 《算法》练习1.1.6 发布于:2020-08-04 21:29 排序... 发布于:2020-08-04 22:10 斐波那契函数 发布于:2020-08-04 15:37 《算法》练习1.1.5 发布于:2020-08-03 23:41 《算法》练习1.1.3 发布于:2020-08-03 22:13 《算法》练习1.1.2 发布于:2020-08-03 20:37 《算法》练习1.1.1 发布于:2020-08-03 19:24 jvaaaaa 发布于:2020-08-03 14:16 练习加深印象 发布于:2020-08-03 13:54 测试显目1 发布于:2020-07-31 16:20 hh-test 发布于:2020-07-30 10:28 聊天小工具。 发布于:2020-07-30 09:40 使用for循环嵌套实现99乘法表。 发布于:2020-07-29 21:22 for循环嵌套练习。 发布于:2020-07-29 19:55 加深三目运算符练习。 发布于:2020-07-29 13:50 逻辑运算符加深印象。 发布于:2020-07-29 13:38 写着玩的东西 发布于:2020-07-30 11:26 算算舍罕王给了多少粒麦子 发布于:2020-07-27 22:48 leetcode 发布于:2020-07-27 01:29 java练习输出打印1到100的奇数和偶数。 发布于:2020-07-25 15:03 test1 发布于:2020-07-24 14:16 第三届天命杯Roll图/模式 发布于:2020-07-23 20:17 用if和else循环判断是雨天还是睛天,男女的状态 发布于:2020-07-23 18:23 用switch循环判断男女还有天气 发布于:2020-07-23 18:22 用switch循环判断输入的数值是星期几。 发布于:2020-07-23 18:22 这个源码是表示商场打折判断写法 发布于:2020-07-23 18:21 这个源码是写用if判断成绩的 发布于:2020-07-23 18:19 用来正实是否是质数的写法 发布于:2020-07-23 18:17 一个登陆功能小文本 发布于:2020-07-23 18:15 用一个递归和一个for循环来表示两个数据 发布于:2020-07-23 18:13 java豪宅房租计算脚本 发布于:2020-07-23 17:49 java练习 发布于:2020-07-23 16:28 输出语句,是System.out.println的... 发布于:2020-07-23 10:27 测试三元运算符 发布于:2020-07-22 19:35 【基础】-数据结构 发布于:2020-07-23 22:40 测试数据类型之间的自动转换和强制转换 发布于:2020-07-22 10:32 java Queue 应用,先进先出用法实例, ... 发布于:2020-07-21 17:16 服务器代码 发布于:2020-07-20 10:59 [更多]
显示目录

Java – Generate random integers in a range

![java-random-integer-in-range][] java-random-integer-in-range

In this article, we will show you three ways to generate random integers in a range.

  1. java.util.Random.nextInt
  2. Math.random
  3. java.util.Random.ints (Java 8)

1. java.util.Random

This Random().nextInt(int bound) generates a random integer from 0 (inclusive) to bound (exclusive).

1.1 Code snippet. For getRandomNumberInRange(5, 10), this will generates a random integer between 5 (inclusive) and 10 (inclusive).

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 What is (max – min) + 1) + min?

Above formula will generates a random integer in a range between min (inclusive) and max (inclusive).

//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 Full examples to generate 10 random integers in a range between 5 (inclusive) and 10 (inclusive).

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;
    }

}

Output.

7
6
10
8
9
5
7
10
8
5

2. Math.random

This Math.random() gives a random double from 0.0 (inclusive) to 1.0 (exclusive).

2.1 Code snippet. Refer to 1.2, more or less it is the same formula.

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

2.2 Full examples to generate 10 random integers in a range between 16 (inclusive) and 20 (inclusive).

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;
    }

}

Output.

17
16
20
19
20
20
20
17
20
16

Note
The Random.nextInt(n) is more efficient than Math.random() * n, read this Oracle forum post.

3. Java 8 Random.ints

In Java 8, new methods are added in java.util.Random

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

This Random.ints(int origin, int bound) or Random.ints(int min, int max) generates a random integer from origin (inclusive) to bound (exclusive).

3.1 Code snippet.

private static int getRandomNumberInRange(int min, int max) {

        Random r = new Random();
        return r.ints(min, (max + 1)).findFirst().getAsInt();

    }

3.2 Full examples to generate 10 random integers in a range between 33 (inclusive) and 38 (inclusive).

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();

    }

}

Output.

34
35
37
33
38
37
34
35
36
37

3.3 Extra, for self-reference.

Generates random integers in a range between 33 (inclusive) and 38 (exclusive), with stream size of 10. And print out the items with forEach.

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

Output.

34
37
37
34
34
35
36
33
37
34

References

  1. java.util.Random JavaDoc
  2. java.lang.Math JavaDoc
  3. Oracle forum : Random Number Generation
  4. Generating weighed random numbers in JavaScript

[java-random-integer-in-range]:

由JSRUN为你提供的Java在线工具
        JSRUN提供的Java在线运行,Java 在线编译工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿