目录
- 一、Random 类的基本用法
- (一)导入类
- (二)创建 Random 对象
- (三)生成随机整数
- (四)生成随机 double 值
- (五)生成随机 boolean 值
- (六)生成随机 float 值
- (七)生成随机 long 值
- 二、Random 类的高级用法
- (一)生成指定范围内的随机数
- (二)生成随机字符串
- (三)洗牌算法
- 三、Math.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_VALUE 和 Integer.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() 方法可以生成一个随机的布尔值,true 和 false 的概率各为 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_VALUE 和 Long.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) {
        Rando编程m 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 = android10; int max = 20; int randomInt = (int) (Math.random() * (max - min)) + min; // 生成 [min, max) 范围内的随机 double 值 double minDouble = 1.android0;编程客栈 double maxDouble = 10.0; double randomDouble = Math.random() * (maxDouble - minDouble) + minDouble;
四、总结
Random 类和 Math.random() 是js Java 中生成随机数的两种主要方式。Random 类提供了更丰富的功能,适用于需要生成多种类型随机数的场景;而 Math.random() 更加简洁,适用于简单的随机数生成需求。掌握这些随机数生成方法,可以在实际开发中灵活应用,为程序增添更多随机性和趣味性。
到此这篇关于Java Random 随机数的用法小结的文章就介绍到这了,更多相关Java Random 随机数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
 
         
                                         
                                         
                                         
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论