java中如何获取指定区间范围的随机数呢?

欣喜 Java经验 发布时间:2025-02-24 16:24:57 阅读数:18140 1
在日常开发中,我们经常需要获取指定范围区间的随机数,那么如何使用java代码实现这一需求呢?下文笔者将一一道来,如下所示

获取指定范围区间的随机数的实现思路

-`Random`类:
  适用于单线程环境,使用简单

-`ThreadLocalRandom`类:
  适用于多线程环境,性能更好

-`Random`类的流方法:
  适用于需要生成多个随机数的情况

-`Math.random()`方法:
  适用于简单的随机数生成
   但不如`Random`类灵活

1.使用`java.util.Random`类

`Random`
 类提供生成随机数的基本功能
  可通过设置范围来获取指定区间内的随机数
 
import java.util.Random;

public class RandomNumberExample {
    public static void main(String[] args) {
        Random random = new Random();
        
        // 获取 [min, max) 范围内的随机整数
        int min = 10;
        int max = 50;
        int randomInt = random.nextInt(max - min) + min;
        System.out.println("Random Integer between " + min + " and " + max + ": " + randomInt);
        
        // 获取 [min, max) 范围内的随机双精度浮点数
        double randomDouble = min + (max - min) * random.nextDouble();
        System.out.println("Random Double between " + min + " and " + max + ": " + randomDouble);
    }
}

2.使用`java.util.concurrent.ThreadLocalRandom`类

`ThreadLocalRandom` 是 `Random` 的一个子类
 专门为多线程环境设计,性能更好。
import java.util.concurrent.ThreadLocalRandom;

public class ThreadLocalRandomExample {
    public static void main(String[] args) {
        // 获取 [min, max) 范围内的随机整数
        int min = 10;
        int max = 50;
        int randomInt = ThreadLocalRandom.current().nextInt(min, max);
        System.out.println("Random Integer between " + min + " and " + max + ": " + randomInt);
        
        // 获取 [min, max) 范围内的随机双精度浮点数
        double randomDouble = ThreadLocalRandom.current().nextDouble(min, max);
        System.out.println("Random Double between " + min + " and " + max + ": " + randomDouble);
    }
}

3.使用`java.util.Random` 类
`ints` 和 `doubles` 方法(Java 8 及以上)

import java.util.Random;

public class RandomStreamExample {
    public static void main(String[] args) {
        Random random = new Random();
        
        // 获取 [min, max) 范围内的随机整数
        int min = 10;
        int max = 50;
        int randomInt = random.ints(min, max).findFirst().getAsInt();
        System.out.println("Random Integer between " + min + " and " + max + ": " + randomInt);
        
        // 获取 [min, max) 范围内的随机双精度浮点数
        double randomDouble = random.doubles(min, max).findFirst().getAsDouble();
        System.out.println("Random Double between " + min + " and " + max + ": " + randomDouble);
    }
}

4.使用`Math.random()`方法

`Math.random()`
方法返回一个 `[0.0, 1.0)` 范围内
 随机双精度浮点数
public class MathRandomExample {
    public static void main(String[] args) {
        // 获取 [min, max) 范围内的随机整数
        int min = 10;
        int max = 50;
        int randomInt = (int)(Math.random() * (max - min)) + min;
        System.out.println("Random Integer between " + min + " and " + max + ": " + randomInt);
        
        // 获取 [min, max) 范围内的随机双精度浮点数
        double randomDouble = min + (max - min) * Math.random();
        System.out.println("Random Double between " + min + " and " + max + ": " + randomDouble);
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202502/17403855318331.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者