Java在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,不支持键盘输入语句但是拥有更高的运行速度,输出简洁明了 。 点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
获取当前时间戳 发布于:2021-05-10 14:10 20210510 测试内部类3 发布于:2021-05-10 08:51 20210510 测试内部类2 发布于:2021-05-10 10:38 20210510 测试内部类1 发布于:2021-05-10 08:27 Calendar的生成 发布于:2021-05-09 23:43 计算出生天数 发布于:2021-05-09 23:07 插入排序算法的改进 发布于:2021-05-07 20:56 插入排序算法 发布于:2021-05-07 20:17 怦然心动Java版, linux下效果最好 发布于:2021-05-10 22:41 选择排序算法改进 发布于:2021-05-06 15:44 java截取字符传中符合标准的日期 发布于:2021-05-06 15:37 冒泡排序算法 发布于:2021-05-06 15:44 选择排序算法--2021.05.05 发布于:2021-05-05 16:46 用户名 密码 发布于:2021-04-21 23:12 Book JavaBean 发布于:2021-04-21 22:47 输入输出库 发布于:2021-04-20 22:41 十进制转十六进制代码 发布于:2021-04-10 13:38 按时区获取近多少天的所有日期 发布于:2021-04-19 20:03 构造方法重载 发布于:2021-03-31 16:16 编程实现,猴子吃桃 发布于:2021-03-29 20:49 软件3-39-傅铎滔 发布于:2021-03-29 20:48 软件3-39-傅铎滔 发布于:2021-03-29 20:47 编写求最大公约数和最小公倍数的程序 发布于:2021-03-29 20:46 编写方法,将8进制数转换为十进制数。这里不要输入,直接写死一个8进制数。 发布于:2021-03-29 20:45 软三 —36 :输入3个数,按从小到大输出。 发布于:2021-03-29 20:38 20软三—刘锦新—36 编程实现: 求100以内的所有偶数的和。 发布于:2021-03-29 20:09 使用集合ArrayList对字符串进行存储和管理 发布于:2021-03-29 19:39 20软三35号 用Java实现如下的骰子游戏: 丢下两个骰子,若总值为7点,则赢,否则输。 发布于:2021-03-29 19:57 20 软三 35号 编写一个类,类名为Rectangle(矩形),它有两个整型的变量width(宽)和height(高);有一个方法area(),没有参数,返回类型为double,功能是求矩形的面积;还有另一个方法为perimeter()没有参数,返回类型为double,功能是求矩形的周长 发布于:2021-03-29 19:37 首页 dp计算 发布于:2021-03-31 23:38 运行结果。 发布于:2021-03-28 19:32 定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据 发布于:2021-03-28 19:24 定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示 发布于:2021-03-28 19:14 使用集合ArrayList对字符串进行存储和管理 发布于:2021-03-28 19:09 前36项斐波那契数列各项 发布于:2021-03-28 15:14 Java拉丁方阶方法二 发布于:2021-03-28 13:18 java拉丁方阵 发布于:2021-03-28 13:19 20软三35号 定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据 发布于:2021-03-29 19:37 20软三35号 使用集合ArrayList对字符串进行存储和管理。 发布于:2021-03-29 19:38 20软三35号 定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示。 发布于:2021-03-29 19:37 定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据 发布于:2021-03-27 00:20 使用集合ArrayList对字符串进行存储和管理 发布于:2021-03-27 00:14 定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据 发布于:2021-03-27 00:12 定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示 发布于:2021-03-27 00:11 使用集合ArrayList对字符串进行存储和管理,运行效果图: 发布于:2021-03-27 00:09 定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据 ;曾子龙 发布于:2021-03-26 23:59 定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示。曾子龙 发布于:2021-03-26 23:56 使用集合ArrayList对字符串进行存储和管理 曾子龙 发布于:2021-03-26 23:58 定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示。支明超 46 发布于:2021-03-27 00:05 使用集合ArrayList对字符串进行存储和管理 支明超 46 发布于:2021-03-26 23:20 [更多]
显示目录

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

使用此草稿 删除草稿

皮肤:

运行模式:

嵌入代码 iframe嵌入: