Java在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,不支持键盘输入语句但是拥有更高的运行速度,输出简洁明了 。 点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
3线程输出26个英文 发布于:2021-06-21 18:04 三个线程轮流输出abc 发布于:2021-06-21 17:50 老鼠、两瓶毒酒 发布于:2021-06-20 19:00 Switch case 发布于:2021-06-18 01:27 bitmap图片 发布于:2021-06-13 17:39 研究生老师工资 发布于:2021-06-09 00:45 实验报告Money 发布于:2021-06-08 23:51 水井实验报告 发布于:2021-06-08 23:41 java子类继承 发布于:2021-06-08 22:49 用Console类实现简单的控制台IO 发布于:2021-06-20 15:59 if条件循环 发布于:2021-06-17 22:12 堆排序扩展题目 发布于:2021-06-05 02:15 改进的堆排序 发布于:2021-06-04 23:42 堆排序-Java 发布于:2021-06-04 21:02 越南语声调处理工具 发布于:2021-06-04 15:58 java测试 发布于:2021-06-09 09:58 快速排序-随机取一个数作为划分标准 发布于:2021-06-04 15:01 小和问题-归并排序扩展 发布于:2021-06-04 01:32 归并排序-Java 发布于:2021-06-03 17:30 冒泡排序-Java 发布于:2021-05-28 17:45 选择排序-Java 发布于:2021-05-28 17:43 一键复用最后代码 发布于:2021-05-26 17:02 Java5-13练习题 发布于:2021-05-25 15:06 键盘输入的 发布于:2021-05-28 19:46 Java5-23练习题 发布于:2021-05-25 14:52 运算注意。 发布于:2021-05-23 18:04 转义字符的使用 发布于:2021-05-23 17:45 1·byte short int 在计算是会自动转化为int 2.float double 为近似值,byte short int 转化时可能会精确丢失 3.把大类型转化小的类型时可能会丢失 发布于:2021-05-23 17:24 IReadBook.java 发布于:2021-05-24 16:04 Java5-20练习题 发布于:2021-05-24 13:09 feistel密码 发布于:2021-05-15 10:52 获取当前时间戳 发布于: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 [更多]
显示目录

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嵌入: