PHPackages                             jerry58321/probability-random - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jerry58321/probability-random

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jerry58321/probability-random
=============================

This is a random number generator that controls the range and probability interval.

v1.0.0(2y ago)118MITPHPPHP &gt;=7.3

Since May 24Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Jerry58321/probability-random)[ Packagist](https://packagist.org/packages/jerry58321/probability-random)[ RSS](/packages/jerry58321-probability-random/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (3)Versions (5)Used By (0)

**ProbabilityRandom**
=====================

[](#probabilityrandom)

ProbabilityRandom 是一個用於根據區間及機率隨機生成數字的 PHP Composer package。

**安裝**
------

[](#安裝)

可以使用 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`** 檔案中找到這些測試案例。

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

1090d ago

Major Versions

v0.0.3 → v1.0.02023-05-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/9935027189df6f0eddf29a8b546d6360de41d46437d725281159274d1908eaa1?d=identicon)[Hubertwei](/maintainers/Hubertwei)

---

Top Contributors

[![Jerry58321](https://avatars.githubusercontent.com/u/42406200?v=4)](https://github.com/Jerry58321 "Jerry58321 (6 commits)")

---

Tags

randomphpprobability

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jerry58321-probability-random/health.svg)

```
[![Health](https://phpackages.com/badges/jerry58321-probability-random/health.svg)](https://phpackages.com/packages/jerry58321-probability-random)
```

###  Alternatives

[gladcodes/keygen

A fluent PHP random key generator.

119668.9k2](/packages/gladcodes-keygen)[laragear/preload

Effortlessly make a Preload script for your Laravel application.

119363.5k](/packages/laragear-preload)[napp/xray-laravel

AWS X-Ray for Laravel applications.

61407.3k](/packages/napp-xray-laravel)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[irfa/php-gatcha

Simple Items Gatcha with PHP

362.4k](/packages/irfa-php-gatcha)[sinergi/token

PHP library to generate random strings

188.7k9](/packages/sinergi-token)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
