2024 年 PHP Conference Japan

gmp_random

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_random亂數

警告

此函式自 PHP 7.2.0 起已被標記為 *已棄用*,並自 PHP 8.0.0 起已被 *移除*。強烈建議不要依賴此函式。

說明

gmp_random(int $limiter = 20): GMP

產生一個亂數。此數字將介於 0 和 (2 ** n) - 1 之間,其中 n 是每個肢體的位元數乘以 limiter。如果 limiter 為負數,則會產生負數。

一個 limb 是 GMP 內部的機制。一個 limb 的位元數不是靜態的,會因系統而異。通常,一個 limb 的位元數是 32 或 64,但這並不能保證。

注意

此函式不會產生密碼學安全的數值,而且*絕不能*用於密碼學用途,或需要無法猜測的傳回值的用途。

如果需要密碼學安全的隨機性,可以使用 Random\Randomizer 搭配 Random\Engine\Secure 引擎。對於簡單的使用案例,random_int()random_bytes() 函式提供了一個方便且安全的 API,它由作業系統的 CSPRNG 支援。

參數

limiter

限制器。

一個 GMP 物件、一個 整數 或一個可以被解釋為數字的 字串,其遵循與在 gmp_init() 中使用字串並啟用自動基數偵測(即 base 等於 0 時)相同的邏輯。

傳回值

一個隨機的 GMP 數字。

範例

範例 #1 gmp_random() 範例

<?php
$rand1
= gmp_random(1); // 0 到 1 * 每個 limb 的位元數 之間的隨機數
$rand2 = gmp_random(2); // 0 到 2 * 每個 limb 的位元數 之間的隨機數

echo gmp_strval($rand1) . "\n";
echo
gmp_strval($rand2) . "\n";
?>

上述範例將輸出

1915834968
8642564075890328087

新增註釋

使用者貢獻的註釋 1 則註釋

1
asphp at dsgml dot com
8 年前
警告:不要使用此函式。

請改用 gmp_random_bits() 或 gmp_random_range()。

此函式的文件和程式碼不符,無論如何,此函式相當無用。
To Top