Java Random 随机数的用法小结

 更新时间:2025年07月07日 08:26:37   作者:Java皇帝  
本文主要介绍了Java Random随机数的用法小结,Random类功能全面,支持生成整数、浮点数、布尔值及实现洗牌等高级操作,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

一、Random 类的基本用法

(一)导入类

在 Java 中,Random 类位于 java.util 包中,因此在使用之前需要导入该包。

import java.util.Random;

(二)创建 Random 对象

可以通过以下两种方式创建 Random 对象:

Random random = new Random();
// 或者指定种子
Random random = new Random(long seed);

种子用于初始化随机数生成器的起始状态。相同的种子会生成相同的随机数序列。

(三)生成随机整数

使用 nextInt() 方法可以生成一个随机整数。如果不指定参数,它将返回一个介于 Integer.MIN_VALUEInteger.MAX_VALUE 之间的随机整数。如果指定一个参数 n,它将返回一个介于 0(包含)和 n(不包含)之间的随机整数。

Random random = new Random();
int randomInt = random.nextInt(); // 生成任意随机整数
int randomIntBetween0And10 = random.nextInt(10); // 生成0到9之间的随机整数

(四)生成随机 double 值

使用 nextDouble() 方法可以生成一个介于 0.0(包含)和 1.0(不包含)之间的随机双精度浮点数。

Random random = new Random();
double randomDouble = random.nextDouble();

(五)生成随机 boolean 值

使用 nextBoolean() 方法可以生成一个随机的布尔值,truefalse 的概率各为 50%。

Random random = new Random();
boolean randomBoolean = random.nextBoolean();

(六)生成随机 float 值

使用 nextFloat() 方法可以生成一个介于 0.0(包含)和 1.0(不包含)之间的随机单精度浮点数。

Random random = new Random();
float randomFloat = random.nextFloat();

(七)生成随机 long 值

使用 nextLong() 方法可以生成一个介于 Long.MIN_VALUELong.MAX_VALUE 之间的随机长整数。

Random random = new Random();
long randomLong = random.nextLong();

二、Random 类的高级用法

(一)生成指定范围内的随机数

在实际开发中,我们常常需要生成指定范围内的随机数。以下是生成指定范围随机数的方法:

Random random = new Random();

// 生成 [min, max) 范围内的随机整数
int min = 10;
int max = 20;
int randomInRange = random.nextInt(max - min) + min;

// 生成 [min, max) 范围内的随机 double 值
double minDouble = 1.0;
double maxDouble = 10.0;
double randomDoubleInRange = random.nextDouble() * (maxDouble - minDouble) + minDouble;

(二)生成随机字符串

有时我们需要生成随机字符串,例如用于生成验证码或随机密码。以下是一个生成随机字符串的示例:

import java.util.Random;

public class RandomStringGenerator {
    private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    public static String generateRandomString(int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder(length);

        for (int i = 0; i < length; i++) {
            int index = random.nextInt(CHARACTERS.length());
            sb.append(CHARACTERS.charAt(index));
        }

        return sb.toString();
    }

    public static void main(String[] args) {
        String randomString = generateRandomString(10);
        System.out.println("随机字符串: " + randomString);
    }
}

(三)洗牌算法

Random 类可以用于实现洗牌算法,随机打乱数组中的元素顺序。以下是一个使用 Random 的洗牌示例:

import java.util.Random;

public class ShuffleExample {
    public static void shuffleArray(int[] array) {
        Random random = new Random();
        for (int i = array.length - 1; i > 0; i--) {
            int j = random.nextInt(i + 1);
            // 交换元素
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        System.out.println("原始数组:");
        for (int num : array) {
            System.out.print(num + " ");
        }

        shuffleArray(array);

        System.out.println("\n洗牌后的数组:");
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}

三、Math.random() 的用法

除了 Random 类之外,Java 还提供了一个更简单的随机数生成方法:Math.random()。它返回一个介于 0.0(包含)和 1.0(不包含)之间的随机双精度浮点数。

double randomValue = Math.random();

如果需要生成指定范围内的随机数,可以结合 Math.random() 和一些简单的数学运算来实现。

// 生成 [min, max) 范围内的随机整数
int min = 10;
int max = 20;
int randomInt = (int) (Math.random() * (max - min)) + min;

// 生成 [min, max) 范围内的随机 double 值
double minDouble = 1.0;
double maxDouble = 10.0;
double randomDouble = Math.random() * (maxDouble - minDouble) + minDouble;

四、总结

Random 类和 Math.random() 是 Java 中生成随机数的两种主要方式。Random 类提供了更丰富的功能,适用于需要生成多种类型随机数的场景;而 Math.random() 更加简洁,适用于简单的随机数生成需求。掌握这些随机数生成方法,可以在实际开发中灵活应用,为程序增添更多随机性和趣味性。

到此这篇关于Java Random 随机数的用法小结的文章就介绍到这了,更多相关Java Random 随机数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Java双大括号{{}}的具体使用

    关于Java双大括号{{}}的具体使用

    本文主要介绍了关于Java双大括号{{}}的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决

    在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决

    这篇文章主要介绍了在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较

    SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较

    在Spring Boot中,@Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,@ConfigurationProperties用于将配置文件中的属性绑定到 Java Bean 上,本文介绍了@Value获取值和@ConfigurationProperties获取值用法及比较,需要的朋友可以参考下
    2024-08-08
  • springboot接收JSON实现示例解析

    springboot接收JSON实现示例解析

    这篇文章主要为大家介绍了springboot如何接收JSON的实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • SpringBoot ResponseEntity标识Http响应方式

    SpringBoot ResponseEntity标识Http响应方式

    这篇文章主要介绍了SpringBoot ResponseEntity标识Http响应方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 一文搞懂JAVA 修饰符

    一文搞懂JAVA 修饰符

    这篇文章主要介绍了JAVA 修饰符的的相关资料,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 23种设计模式(11)java策略模式

    23种设计模式(11)java策略模式

    这篇文章主要为大家详细介绍了23种设计模式之java策略模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java线程同步Lock同步锁代码示例

    Java线程同步Lock同步锁代码示例

    这篇文章主要介绍了Java线程同步Lock同步锁代码示例,首先介绍了Java线程同步的原理,然后对lock同步锁作了简要阐述,分享了代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Spring Data JPA实现动态查询的两种方法

    Spring Data JPA实现动态查询的两种方法

    本篇文章主要介绍了Spring Data JPA实现动态查询的两种方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • 使用Java提取字符串里的xml标签

    使用Java提取字符串里的xml标签

    在Java中,我们经常需要处理XML数据,有时候,我们需要从一个包含XML标签的字符串中提取出这些标签,本文将介绍如何使用Java代码来获取字符串中的XML标签,需要的可以参考下
    2024-12-12

最新评论