jerry58321/ probability-random
这是一个控制范围和概率区间的随机数生成器。
v1.0.0
2023-05-24 16:30 UTC
Requires
- php: >=7.3
- illuminate/collections: ^8.0|^9.0
- illuminate/contracts: ^8.0|^9.0
Requires (Dev)
- phpunit/phpunit: ^9.6
This package is not auto-updated.
Last update: 2024-09-26 14:45:07 UTC
README
ProbabilityRandom 是一个用于根据区间和概率随机生成数字的 PHP Composer 包。
安装
可以使用 Composer 来安装 ProbabilityRandom。请在您的项目目录中运行以下命令:
composer require jerry58321/probability-random
用法
初始化
首先,您需要将 ProbabilityRandom
类引入到您的代码中:
use Jerry58321\ProbabilityRandom\ProbabilityRandom;
然后,您可以通过以下方式初始化一个 ProbabilityRandom
实例:
$min = 1; // 最小值 $max = 100; // 最大值 $probabilityRandom = ProbabilityRandom::build($min, $max); // 注意:build method 第三個參數為是否使用安全區間, // 若設定不啟用(false)時,遇到 min > max 情況時則會拋出例外,預設為(true)。 // 若採用預設啟用(true),遇到 min > max 情況時則不採用區間機率(等於使用 random_int)
设置区间比例和区间概率
您可以使用:
setRangeProportions
方法设置区间比例,区间比例是一个数值数组,每个数值表示该区间在整个范围内的比例。
setRangeProbabilities
方法设置区间概率,区间概率是一个数值数组,每个数值表示该区间的概率,所有数值的总和必须为 1。
注意:区间概率的数组数量必须为区间比例的数组数量+1
/** * e.g. 假設 min=1, max=1000 * 區間1比例=0.04, 範圍=1(min) ~ 40 ,機率=0.01 (1%) * 區間2比例=0.08, 範圍=41 ~ 119 ,機率=0.36 (36%) * 區間3比例=0.2, 範圍=120 ~ 318 ,機率=0.34 (34%) * 區間4比例=0.08, 範圍=319 ~ 397 ,機率=0.2 (20%) * 區間5比例=0.17, 範圍=398 ~ 566 ,機率=0.06 (6%) * 區間6 範圍=567 ~ 1000(max) ,機率=0.03 (3%) */ $min = 1; // 最小隨機值 $max = 1000; // 最大隨機值 $proportions = [0.04, 0.08, 0.2, 0.08, 0.17]; // 區間比例 $probabilities = [0.01, 0.36, 0.34, 0.2, 0.06, 0.03]; // 區間機率 $probabilityRandom = ProbabilityRandom::build($min, $max) ->setRangeProportions($proportions) ->setProbabilities($probabilities);
生成随机数
使用 random
方法可以生成一个随机数,该数会根据设置的区间比例和概率进行随机生成。
$randomNumber = $probabilityRandom->random();
其他方法
ProbabilityRandom
类还提供了一些其他方法:
getActualRangeValue
:获取实际区间数值getExpectValue
:获取期望值checkRangeSettingLegal
:检查区间设置是否合法checkProbabilitiesSettingLegal
:检查概率设置是否合法isSafeRange
:是否为安全区间
详细的方法使用方式可以参考代码中的注释。
单元测试
本包提供了一些单元测试示例,您可以在 ProbabilityRandomTest.php
文件中找到这些测试案例。