`StdRandom.java`

StdRandom.java 是一个非常实用的 Java 类,它提供了多种生成伪随机数的方法,适用于不同的概率分布。下面是对 StdRandom 类的主要功能和用法的总结:

主要功能

  1. 设置和获取随机种子

    • setSeed(long s):设置随机数生成器的种子,确保每次运行程序时都能生成相同的随机数序列。
    • getSeed():获取当前的随机数生成器种子。
  2. 生成均匀分布的随机数

    • uniform():返回一个在 [0, 1) 区间内的随机浮点数。
    • uniform(int n):返回一个在 [0, n) 区间内的随机整数。
    • uniform(long n):返回一个在 [0, n) 区间内的随机长整数。
    • uniform(int a, int b):返回一个在 [a, b) 区间内的随机整数。
    • uniform(double a, double b):返回一个在 [a, b) 区间内的随机浮点数。
  3. 生成伯努利分布的随机数

    • bernoulli():返回一个布尔值,以 50% 的概率为 true,50% 的概率为 false
    • bernoulli(double p):返回一个布尔值,以概率 ptrue,以概率 1 - pfalse
  4. 生成高斯分布的随机数

    • gaussian():返回一个标准正态分布(均值为 0,标准差为 1)的随机浮点数。
    • gaussian(double mu, double sigma):返回一个均值为 mu,标准差为 sigma 的高斯分布的随机浮点数。
  5. 生成几何分布的随机数

    • geometric(double p):返回一个几何分布的随机整数,表示独立试验前第一次成功的次数。
  6. 生成泊松分布的随机数

    • poisson(double lambda):返回一个泊松分布的随机整数,均值为 lambda
  7. 生成指数分布的随机数

    • exponential(double lambda):返回一个指数分布的随机浮点数,均值为 1/lambda
  8. 洗牌算法

    • shuffle(double[] a):随机打乱数组 a 中的元素。
    • shuffle(int[] a):随机打乱数组 a 中的元素。
    • shuffle(Object[] a):随机打乱数组 a 中的元素。
    • shuffle(double[] a, int lo, int hi):随机打乱数组 a 中从索引 lohi 之间的元素。
    • shuffle(int[] a, int lo, int hi):随机打乱数组 a 中从索引 lohi 之间的元素。
    • shuffle(Object[] a, int lo, int hi):随机打乱数组 a 中从索引 lohi 之间的元素。

示例用法

import algs4.util.StdRandom;

public class Main {
    public static void main(String[] args) {
        // 设置随机种子
        StdRandom.setSeed(12345);

        // 生成 [0, 1) 区间的随机浮点数
        double randomDouble = StdRandom.uniform();
        System.out.println("Random double: " + randomDouble);

        // 生成 [0, 10) 区间的随机整数
        int randomInt = StdRandom.uniform(10);
        System.out.println("Random int: " + randomInt);

        // 生成伯努利分布的随机布尔值
        boolean randomBoolean = StdRandom.bernoulli(0.7);
        System.out.println("Random boolean: " + randomBoolean);

        // 生成高斯分布的随机浮点数
        double gaussianValue = StdRandom.gaussian(5.0, 2.0);
        System.out.println("Gaussian value: " + gaussianValue);

        // 洗牌算法
        double[] array = {1.0, 2.0, 3.0, 4.0, 5.0};
        StdRandom.shuffle(array);
        System.out.print("Shuffled array: ");
        for (double value : array) {
            System.out.print(value + " ");
        }
    }
}

总结

StdRandom 类提供了一套强大的工具,用于生成各种概率分布的随机数和洗牌操作。通过设置随机种子,可以确保结果的可重复性,这在测试和调试中非常有用。希望这些信息对您有所帮助!如果有任何具体问题或需要进一步的帮助,请随时告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值