commons-rng(伪随机数生成)
概述
提供伪随机数生成功能,包含多种算法实现和基础功能。
maven依
<!--核心模块,包含了多种伪随机数生成算法的实现,如线性同余生成器(LCG)、梅森旋转算法(Mersenne Twister)等。--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-rng-core</artifactId><version>1.6</version></dependency><!--客户端使用的 API,方便开发者快速集成和使用随机数生成功能。--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-rng-client-api</artifactId><version>1.6</version></dependency><!-- 采样模块,支持从各种分布中进行随机采样,如均匀分布、正态分布等。 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-rng-sampling</artifactId><version>1.6</version></dependency><!-- 简单模块,提供了易于使用的随机数生成接口,适合快速开发和原型设计。 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-rng-simple</artifactId><version>1.6</version></dependency>
示例
- 通过指定算法生成随机数
RestorableUniformRandomProvider randomProvider = RandomSource.WELL_1024_A.create();for (int i = 0; i < 20; i++) {System.out.println(randomProvider.nextInt());}
- 在指定空间图形中均匀取点
//在线段均匀取点,参数分别是随机数生成器、起始点坐标(支持一维、二维、三维及多维)double[] p1 = LineSampler.of(RandomSource.JDK.create(), new double[]{0,0,0},new double[]{2,2,2}).sample();System.out.println(Arrays.toString(p1));//在矩形、长方形空间均匀取点,参数分别是随机数生成器、起始点坐标(支持二维、三维及多维)double[] p2 = BoxSampler.of(RandomSource.JDK.create(), new double[]{0,0,0}, new double[]{2,2,2}).sample();System.out.println(Arrays.toString(p2));//在圆、球等空间均匀取点,参数分别是随机数生成器、维度(支持二维、三维及多维)double[] p3 = UnitSphereSampler.of(RandomSource.JDK.create(), 3).sample();System.out.println(Arrays.toString(p3));//在三角形空间均匀取点,参数分别是随机数生成器、三个顶点(支持二维、三维及多维)double[] p4 = TriangleSampler.of(RandomSource.JDK.create(), new double[]{0, 0}, new double[]{2, 2}, new double[]{0, 2}).sample();System.out.println(Arrays.toString(p4));
- 数组、集合随机排序及取值
//打乱集合指定范围内元素的顺序int[] arr1 = ArraySampler.shuffle(RandomSource.JDK.create(), new int[]{1,2,3,4,5,6,7,8,9},0,5);System.out.println(Arrays.toString(arr1));//随机获取集合中指定数量的元素List<Integer> list1 = ListSampler.sample(RandomSource.JDK.create(), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9), 5);System.out.println(list1);//集合中随机获取一个元素CollectionSampler sampler=new CollectionSampler(RandomSource.JDK.create(), Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));System.out.println(sampler.sample());//随机获取5个元素中获取3个元素的一个组合int[] arr2 = new CombinationSampler(RandomSource.JDK.create(), 5, 3).sample();System.out.println(Arrays.toString(arr2));//随机获取5个元素中获取3个元素的一个排序int[] arr3 = new PermutationSampler(RandomSource.JDK.create(), 5, 3).sample();System.out.println(Arrays.toString(arr3));
//生成高斯分布(正态分布)随机数,参数分别是标准正态分布随机数的高效采样器、均值、标准差double sample = GaussianSampler.of(new BoxMullerNormalizedGaussianSampler(RandomSource.JDK.create()), 5, 1).sample();System.out.println(sample);//生成泊松分布随机数,参数分别是随机数生成器、均值int sample1 = PoissonSampler.of(RandomSource.JDK.create(), 5).sample();System.out.println(sample1);
常用API
commons-rng-simple(包含commons-rng-client-api和commons-rng-core) 提供了易于使用的随机数生成接口,方便快速使用
- RandomSource 常用随机数生成器算法枚举
枚举项 | 算法类型 | 周期长度 | 特点 |
---|---|---|---|
JDK | jdk自带 | 2^48 | 兼容性优先,性能一般 |
WELL_512_A | WELL512A | 2^512-1 | 均衡质量与性能 |
WELL_1024_A | WELL1024A | 2^1024-1 | 更高维度的均匀性 |
WELL_19937_A | WELL19937A | 2^19937-1 | 长周期高统计质量 |
WELL_19937_C | WELL19937C | 2^19937 - 1 | WELL19937改进版,比 MT算法 更快,且避免其初始状态缺陷 |
WELL_44497_A | WELL44497A | 2^44497-1 | 极长周期,内存占用较高 |
WELL_44497_B | WELL44497B | 2^44497-1 | WELL44497改进版,比标准 MT算法 更优的初始状态质量 |
MT | MersenneTwister | 2^19937-1 | 输出精度为324位整数,超长周期,适合科学计算 |
MT_64 | MersenneTwister-64 | 2^19937 - 1 | 输出精度为64位整数,比32位版本略慢,但提供更高精度输出 |
ISAAC | ISAAC | 2^8295 | 加密安全设计 |
SPLIT_MIX_64 | SplitMix64 | 2^64 | 快速种子生成器 |
TWO_CMRES | TwoCmres | 约 2^64 | 双线性同余组合算法,中等周期 |
TWO_CMRES_SELECT | TwoCmresSelect | 2^64 | TwoCmres的优化变体,比单一 LCG 更快,且减少线性相关性 |
MWC_256 | MultiplyWithCarry256 | 约 2^8222 | 256位状态,快速但统计质量一般 |
KISS | KISS (Keep It Simple) | 约 2^123 | 经典混合算法,适合基础场景 |
XOR_SHIFT_1024_S | XorShift1024* | 2^1024-1 | 经典高性能算法 |
XOR_SHIFT_1024_S_PHI | XorShift1024StarPhi | 2^1024-1 | 改进输出函数,统计质量更优 |
XO_RO_SHI_RO_64_S | XoRoShiRo64* | 2^64-1 | |
XO_RO_SHI_RO_64_SS | XoRoShiRo64** | 2^64-1 | |
XO_SHI_RO_128_PLUS | XoShiRo128+ | 2^128-1 | |
XO_SHI_RO_128_SS | XoShiRo128** | 2^128-1 | |
XO_RO_SHI_RO_128_PLUS | XoRoShiRo128+ | 2^128-1 | 轻量级高速算法 |
XO_RO_SHI_RO_128_SS | XoRoShiRo128** | 2^128-1 | 最高统计质量变体 |
XO_SHI_RO_256_PLUS | XoShiRo256+ | 2^256-1 | 256位状态版本 |
XO_SHI_RO_256_SS | XoShiRo256** | 2^256-1 | |
XO_SHI_RO_512_PLUS | XoShiRo512+ | 2^512-1 | 512位状态版本 |
XO_SHI_RO_512_SS | XoShiRo512** | 2^256-1 | |
XO_SHI_RO_128_PP | XoShiRo128++ | 2^128-1 | |
XO_RO_SHI_RO_128_PP | XoRoShiRo128++ | 2^128-1 | 增强版输出函数 |
XO_SHI_RO_256_PP | XoShiRo256++ | 2^256-1 | 256位状态改进版 |
XO_SHI_RO_512_PP | XoShiRo512++ | 2^512-1 | 512位状态改进版 |
XO_RO_SHI_RO_1024_PP | XoRoShiRo1024++ | 2^1024-1 | |
XO_RO_SHI_RO_1024_S | XoRoShiRo1024* | 2^1024-1 | |
XO_RO_SHI_RO_1024_SS | XoRoShiRo1024** | 2^1024-1 | |
PCG_XSH_RR_32 | PCG-XSH-RR-32 | 2^64 | 紧凑型算法,32位输出 |
PCG_XSH_RS_32 | PCG-XSH-RS-32 | 2^64 | PCG 变体,不同输出函数 |
PCG_RXS_M_XS_64 | PCG-RXS-M-XS-64 | 2^64 | 64位输出版本,科学计算 |
PCG_MCG_XSH_RR_32 | PCG_MCG_XSH_RR_32 | 2^32 | |
PCG_MCG_XSH_RS_32 | PCG_MCG_XSH_RS_32 | 2^32 | 最简实现,速度最快 |
PCG_XSH_RR_32_OS | PCG_XSH_RR_32_OS | 2^64 | 需要轻量级但比标准PRNG更安全的场景 |
PCG_XSH_RS_32_OS | PCG_XSH_RS_32_OS | 2^64 | 需要更高熵的轻量级安全场景 |
PCG_RXS_M_XS_64_OS | PCG_RXS_M_XS_64_OS | 2^64 | 需要更高熵的轻量级安全场景 |
MSWS | MiddleSquareWeylSequence | 约 2^64 | 实验性算法,适合非关键性随机需求 |
SFC_32 | SmallFastChaotic32 | 约2^128 | 快速混沌算法,适合低延迟场景 |
SFC_64 | SmallFastChaotic64 | 约2^256 | 混沌算法,超高吞吐量 |
JSF_32 | JenkinsSmallFast32 | 约2^128 | 实时性要求高的随机事件 |
JSF_64 | JenkinsSmallFast64 | 约2^256 | 需要高精度输出的场景 |
L64_X128_SS | LcgXorshiftStateSplitting | 2^64 - 1 | 64位状态、128位种子,非关键随机逻辑 |
L32_X64_MIX | LcgXorshiftMix | ≥ 2^64 | 32位状态、64位种子, 嵌入式/低资源环境 |
L64_X128_MIX | LcgXorshiftMix | ≥ 2^128 | 64位状态、128位种子,游戏/通用随机需求 |
L64_X256_MIX | LcgXorshiftMix | ≥ 2^256 | 64位状态、256位种子,高性能科学计算 |
L64_X1024_MIX | LcgXorshiftMix | ≥ 2^1024 | 64位状态、1024位种子, 超长周期模拟 |
L128_X128_MIX | LcgXorshiftMix | ≥ 2^128 | 128位状态、128位种子,平衡性能与随机性 |
L128_X256_MIX | LcgXorshiftMix | ≥ 2^256 | 128位状态、256位种子, 高精度金融建模 |
L128_X1024_MIX | LcgXorshiftMix | ≥ 2^1024 | 128位状态、1024位种子,密码学外围应用 |
- RestorableUniformRandomProvider可用方法
方法 | 说明 |
---|---|
saveState() | 保存当前内部状态为字节数组,便于后续恢复。 |
restoreState(RandomProviderState var1) | 从字节数组恢复状态,使生成器回到保存时的状态。 |
nextBytes(byte[] bytes) nextBytes(byte[] bytes, int start, int len) | 填充指定字节数组或指定范围的数组片段,内容为均匀分布的随机字节 |
nextInt() nextInt(int n) nextInt(int origin, int bound) | 生成均匀分布的随机整数,可指定范围:[origin, bound) |
nextLong() nextLong(long n) nextLong(long origin, long bound) | 生成均匀分布的随机长整数,可指定范围:[origin, bound) |
nextFloat() nextFloat(float bound) nextFloat(float origin, float bound) | 生成均匀分布的随机浮点数,可指定范围:[origin, bound) |
nextDouble() nextDouble(double bound) nextDouble(double origin, double bound) | 生成均匀分布的随机双精度浮点数,可指定范围:[origin, bound) |
nextBoolean() | 生成一个随机的布尔值 |
ints() ints(int origin, int bound) ints(long streamSize) ints(long streamSize, int origin, int bound) | 批量生成随机整数 |
longs() longs(long origin, long bound) longs(long streamSize) longs(long streamSize, long origin, long bound) | 批量生成随机长整数 |
doubles() doubles(double origin, double bound) doubles(long streamSize) doubles(long streamSize, double origin, double bound) | 批量生成随机双精度浮点数 |
commons-rng-core 各种随机算法类
- 32位整数生成器
方法 | 说明 |
---|---|
DotyHumphreySmallFastCounting32 | SFC算法的32位版本 |
ISAACRandom | 基于 ISAAC算法 的加密安全伪随机数生成器,适用于密码学、安全令牌场景 |
JDKRandom | 基于 Java标准库 java.util.Random 的随机数生成器 |
JenkinsSmallFast32 | 基于 哈希/随机数算法的随机数生成器 |
KISSRandom | 基于 KISS算法 的轻量级高性能随机数生成器 |
L32X64Mix | 基于 LXM算法 的高性能伪随机数生成器 |
MersenneTwister | 基于 梅森旋转算法 的随机数生成器 |
MiddleSquareWeylSequence | 结合 Middle Square(中平方法)和 Weyl Sequence(韦伊序列)两种数学方法的伪随机数生成器,适用于简单随机事件(如游戏中道具掉落) |
MultiplyWithCarry256 | 基于MWC算法 的高性能伪随机数生成器,适用于高频通用需求(如游戏AI) |
PcgMcgXshRr32 | 基于 PCG算法 的高性能伪随机数生成器,基于 Mcg和XSH-RR 输出变换,适用于科学计算、需要高均匀性的场景 |
PcgMcgXshRs32 | 基于 PCG算法 的高性能伪随机数生成器,基于 Mcg和XSH-RS 输出变换,适用于游戏、高频但质量要求不极端的场景 |
PcgXshRr32 | 基于 PCG算法 的高性能伪随机数生成器,基于 XSH-RR输出变换 |
PcgXshRs32 | 基于 PCG算法 的高性能伪随机数生成器,基于 XSH-RS输出变换 |
Well512a | 基于 WELL算法 的伪随机数生成器,512位状态大小,适用于轻量级高频需求 |
Well1024a | 基于 WELL算法 的伪随机数生成器,1024位状态大小,适用于通用科学计算 |
Well19937a | 基于 WELL算法 的伪随机数生成器,19937位状态大小,适用于高精度模拟 |
Well19937c | 基于 WELL算法 的伪随机数生成器,19937位状态大小,优化了Well19937a性能,适用于实时性要求较高的场景 |
Well44497a | 基于 WELL算法 的伪随机数生成器,44497位状态大小,适用于密码学预处理、高安全模拟 |
Well44497b | 基于 WELL算法 的伪随机数生成器,44497位状态大小,优化了Well44497a性能,适用于需要长周期且高性能的场景 |
XoRoShiRo64Star | 基于 XoRoShiRo算法64位 的伪随机数生成器,一重乘法版,适用于轻量级高频需求(如游戏) |
XoRoShiRo64StarStar | 基于 XoRoShiRo算法64位 的伪随机数生成器,双重乘法输出变换,适用于更高统计质量的64位场景 |
XoShiRo128Plus | 基于 XoShiRo算法128位 的伪随机数生成器,一重加法版,适用于通用高性能需求 |
XoShiRo128PlusPlus | 基于 XoShiRo算法128位 的伪随机数生成器,双重加法输出变换,适用于平衡速度与质量场景 |
XoShiRo128StarStar | 基于 XoShiRo算法128位 的伪随机数生成器,双重乘法输出变换,适用于高统计质量需求 |
- 64位整数生成器
方法 | 说明 |
---|---|
DotyHumphreySmallFastCounting64 | SFC算法的64位版本 |
JenkinsSmallFast64 | 基于 哈希/随机数算法的随机数生成器 |
L64X128Mix | 基于 LXM算法 的高性能伪随机数生成器,64+128位状态大小 |
L64X128StarStar | 基于 LXM算法 的高性能伪随机数生成器,64+128位状态大小,优化为乘法输出变换 |
L64X256Mix | 基于 LXM算法 的高性能伪随机数生成器,64+256位状态大小 |
L64X1024Mix | 基于 LXM算法 的高性能伪随机数生成器,64+1024位状态大小 |
L128X128Mix | 基于 LXM算法 的高性能伪随机数生成器,128+128位状态大小 |
L128X256Mix | 基于 LXM算法 的高性能伪随机数生成器,128+256位状态大小 |
L128X1024Mix | 基于 LXM算法 的高性能伪随机数生成器,128+1024位状态大小 |
MersenneTwister64 | 基于 梅森旋转算法 的随机数生成器 |
PcgRxsMXs64 | 基于 PCG算法 的高性能伪随机数生成器,基于 RXS-M-XS 输出变换 |
SplitMix64 | 基于 PRNG算法 的伪随机数生成器,适合对性能要求高的场景(如游戏、模拟)。 |
TwoCmres | 基于 TwoCmres算法 的伪随机数生成器 |
XoRoShiRo128Plus | 基于 XoRoShiRo算法128位 的伪随机数生成器 |
XoRoShiRo128PlusPlus | 基于 XoRoShiRo算法128位 的伪随机数生成器,双重加法输出变换 |
XoRoShiRo128StarStar | 基于 XoRoShiRo算法128位 的伪随机数生成器,双重乘法输出变换 |
XoRoShiRo1024PlusPlus | 基于 XoRoShiRo算法128位 的伪随机数生成器,双重加法输出变换 |
XoRoShiRo1024Star | 基于 XoRoShiRo算法128位 的伪随机数生成器 |
XoRoShiRo1024StarStar | 基于 XoRoShiRo算法128位 的伪随机数生成器,双重乘法输出变换 |
XorShift1024Star | 基于 XorShift算法1024位 的伪随机数生成器 |
XorShift1024StarPhi | 基于 XorShift算法1024位 的伪随机数生成器,适用于长期模拟、高维统计 |
XoShiRo256Plus | 基于 XoShiRo算法256位 的伪随机数生成器 |
XoShiRo256PlusPlus | 基于 XoShiRo算法256位 的伪随机数生成器,双重加法输出变换 |
XoShiRo256StarStar | 基于 XoShiRo算法256位 的伪随机数生成器,双重乘法输出变换 |
XoShiRo512Plus | 基于 XoShiRo算法512位 的伪随机数生成器 |
XoShiRo512PlusPlus | 基于 XoShiRo算法512位 的伪随机数生成器,双重加法输出变换 |
XoShiRo512StarStar | 基于 XoShiRo算法512位 的伪随机数生成器,双重乘法输出变换 |
- 所有随机数生成器均可使用next()方法获取随机数.
commons-rng-sampling 用于概率抽样和随机分布生成
- 常用采样器
提供基于统计分布的采样功能,如生成符合特定概率分布的随机数。
取样器 | 说明 |
---|---|
GaussianSampler | 生成正态分布(高斯分布)随机数的采样器。配置参数:均值、标准差 |
BoxMullerNormalizedGaussianSampler | 基于 Box-Muller 变换算法实现的标准正态分布(μ=0, σ=1)随机数生成器。 |
MarsagliaNormalizedGaussianSampler | 基于 Marsaglia 极坐标法实现的标准正态分布(μ=0, σ=1)随机数生成器。 |
ZigguratNormalizedGaussianSampler | 基于 Ziggurat 算法实现的标准正态分布(μ=0, σ=1)随机数生成器。 |
PoissonSampler | 生成泊松分布随机数的采样器。配置参数:均值 |
KempSmallMeanPoissonSampler | 针对小均值泊松分布(λ ≤ 40)优化的采样器,采用 Kemp 算法实现高效采样。比通用泊松采样器更高效。配置参数:均值 |
LargeMeanPoissonSampler | 针对大均值泊松分布(λ > 40)优化的采样器,采用高斯近似算法实现高效采样。配置参数:均值 |
SmallMeanPoissonSampler | 针对小均值泊松分布(λ ≤ 40)优化的采样器,基于逆变换法实现高效采样。配置参数:均值 |
AhrensDieterExponentialSampler | 用于生成指数分布随机数的高效采样器。配置参数:均值 |
AhrensDieterMarsagliaTsangGammaSampler | 用于生成伽马分布随机数的高性能采样器。配置参数: 形状参数、反尺度参数 |
AliasMethodDiscreteSampler | 基于别名方法实现的高效离散分布采样器,适用于加权随机抽样场景。配置参数: 权重数组 |
ChengBetaSampler | 用于生成 Beta 分布随机数的高效采样器。配置参数:α、β |
ContinuousUniformSampler | 用于生成连续均匀分布随机数的采样器,适用于在指定区间内生成均匀分布的浮点数。配置参数:下限(包含)、上限(不包含) |
DiscreteUniformSampler | 用于生成离散均匀分布随机整数的采样器,适用于在指定范围内等概率抽取整数的场景。配置参数:下限(包含)、上限(包含) |
DirichletSampler | 用于生成 Dirichlet 分布随机向量的采样器,适用于生成总和为1的多维概率分布样本。配置参数:浓度参数 |
FastLoadedDiceRollerDiscreteSampler | 基于 FLDR 算法 实现的离散分布采样器,专为加权随机抽样场景优化设计。 配置参数:权重数组 |
GeometricSampler | 用于生成几何分布随机数的采样器,适用于模拟离散事件首次成功所需的试验次数。配置参数:单次试验成功概率 |
GuideTableDiscreteSampler | 基于 引导表法 实现的离散分布采样器,适用于高效加权随机抽样场景。 配置参数:权重数组 |
InverseTransformContinuousSampler | 基于 逆变换法 实现的连续分布采样器,可通过解析逆累积分布函数生成的分布。配置参数:连续分布逆累积概率计算的函数 |
InverseTransformDiscreteSampler | 基于 逆变换法 实现的离散分布采样器,适用于可通过逆累积概率函数生成的离散分布。配置参数:用于离散分布逆累积概率计算的函数 |
InverseTransformParetoSampler | 基于 逆变换法 实现的帕累托分布采样器,适用于生成服从帕累托分布的随机数。配置参数:尺度参数、形状参数 |
LevySampler | 用于生成列维分布随机数的采样器,适用于模拟具有重尾特性的随机过程。配置参数:位置参数、尺度参数 |
LogNormalSampler | 用于生成对数正态分布随机数的采样器,适用于生成右偏(正偏态)的连续随机变量。配置参数:对数均值、对数标准差 |
MarsagliaTsangWangDiscreteSampler.Binomial | 基于 Marsaglia-Tsang-Wang 算法 实现的离散分布采样器,专为高效加权随机抽样设计,支持二项分布。配置参数:试验次数、单次成功概率 |
MarsagliaTsangWangDiscreteSampler.Enumerated | 基于 Marsaglia-Tsang-Wang 算法 实现的离散分布采样器,专为高效加权随机抽样设计,支持枚举分布。配置参数:权重数组 |
MarsagliaTsangWangDiscreteSampler.Poisson | 基于 Marsaglia-Tsang-Wang 算法 实现的离散分布采样器,专为高效加权随机抽样设计,支持泊松分布。配置参数:均值 |
RejectionInversionZipfSampler | 基于 拒绝反转法 实现的 Zipf 分布采样器,适用于生成服从 Zipf 定律的离散随机数。配置参数:元素总数、指数参数 |
StableSampler | 用于生成稳定分布随机数的采样器,适用于模拟具有重尾和偏态特性的随机过程。配置参数:稳定性参数、偏度参数、尺度参数、位置参数 |
TSampler | 用于生成 Student’s t 分布 随机数的采样器,适用于小样本统计推断和重尾分布建模。配置参数:自由度 |
UniformLongSampler | 用于生成长整型均匀分布随机数的采样器,适用于在指定区间内生成均匀分布的 long 类型随机数。配置参数:下限(包含)、上限(包含) |
ZigguratSampler.NormalizedGaussian | 基于 Ziggurat 算法 实现的高性能采样器,主要用于生成服从标准正态分布的随机数。 |
ZigguratSampler.Exponential | 基于 Ziggurat 算法 实现的高性能采样器,主要用于生成服从指数分布的随机数。配置参数:均值 |
支持从几何形状或空间坐标点进行采样,例如在三维空间中生成符合特定几何形状的随机点。
取样器 | 说明 |
---|---|
BoxSampler | 用于在多维空间中矩形或长方体内生成均匀采样点的工具类 |
LineSampler | 用于在多维空间中沿直线(线段)生成均匀采样点的工具类 |
TetrahedronSampler | 在三维空间的正四面体内生成均匀随机点的采样器 |
TriangleSampler | 用于在多维空间中三角形内生成均匀采样点的工具类 |
UnitBallSampler | 用于在多维空间中单位圆或单位球体内部生成均匀采样点的工具类。单位圆或单位球的半径为1 |
UnitSphereSampler | 用于在多维空间中单位圆或单位球面生成均匀采样点的工具类。单位圆或单位球的半径为1 |
数组、集合随机排序和获取元素
取样器 | 说明 |
---|---|
ArraySampler | 数组元素随机打乱工具 |
ListSampler | 集合元素随机打乱或抽取工具 |
CollectionSampler | 用于从集合中随机抽样元素的工具类 |
DiscreteProbabilityCollectionSampler | 基于权重的离散抽样(如轮盘赌选择) |
CombinationSampler | 随机组合抽取工具类 |
PermutationSampler | 随机排列抽取工具类(如数组洗牌) |
- NormalizedGaussianSampler可用实现类(标准正态分布随机数采样器)
实现类 | 说明 |
---|---|
BoxMullerNormalizedGaussianSampler | 基于 Box-Muller 变换实现的标准正态分布随机数采样器 |
MarsagliaNormalizedGaussianSampler | 基于 Marsaglia 极坐标法实现的标准正态分布随机数采样器,更快,适用于高性能需求场景 |
ZigguratNormalizedGaussianSampler | 基于 Ziggurat 算法实现的标准正态分布随机数采样器 ,适用于高频调用、高性能需求 |
- 用于组合多个采样器的工具类,支持通过逻辑运算或数学运算将基础采样器组合成复杂分布。
CompositeSamplers
方法 | 说明 |
---|---|
newObjectSamplerBuilder() | 用于构建自定义对象采样器的构造器 |
newSharedStateObjectSamplerBuilder() | 用于构建可共享随机状态的复杂对象采样器的构造器 |
newDiscreteSamplerBuilder() | 用于构建自定义离散分布采样器的构造器 |
newSharedStateDiscreteSamplerBuilder() | 用于构建支持共享状态的离散型采样器的构造器 |
newContinuousSamplerBuilder() | 用于构建连续型采样器的构造器 |
newSharedStateContinuousSamplerBuilder() | 用于构建支持共享状态的连续型采样器的构造器 |
newLongSamplerBuilder() | 用于构建长整型采样器的构造器 |
newSharedStateLongSamplerBuilder() | 用于构建支持共享状态的长整型采样器的构造器 |
CompositeSamplers.Builder
方法 | 说明 |
---|---|
size() | 获取添加的采样器数量 |
add(S var1, double var2) | 新增采集器 |
setFactory(DiscreteProbabilitySamplerFactory var1) | 设置采集器工厂 |
build(UniformRandomProvider var1) | 构建采集器对象 |