lcg_value

関数の概要

lcg_value はPHPで0以上1未満の浮動小数点乱数を生成するための関数です。線形合同法 (Linear Congruential Generator, LCG) に基づいた疑似乱数生成器を利用しており、同じシード値に対しても同じ乱数列を生成します。乱数の範囲は0以上1未満で連続的な値を返すため、確率的な計算やシミュレーションなどに便利です。

パラメータの説明

  • この関数はパラメータを受け取りません。使用する際は引数なしで呼び出します。

戻り値

0以上1未満の浮動小数点数を返します。返される値は一様分布に近似しており、0は含まれますが1は含まれません。

使用例

基本的な使い方

<?php
// 0から1未満の乱数を1つ取得
$randomValue = lcg_value();
echo $randomValue;
?>

この例では、単純に lcg_value() 関数を呼び出して乱数を取得し、表示しています。毎回異なる値が出力されます。

乱数を使った簡単な確率判定

<?php
// 30%の確率でtrueを返す例
if (lcg_value() < 0.3) {
    echo "当たり!";
} else {
    echo "はずれ";
}
?>

0から1の間の値を生成し、その値が0.3未満なら「当たり!」を表示します。このように確率の判定にも活用可能です。

範囲内の乱数を生成する(0-10の小数)

<?php
// 0.0 から 10.0 未満の乱数を生成
$min = 0;
$max = 10;
$randomFloat = $min + lcg_value() * ($max - $min);
echo $randomFloat;
?>

乱数のスケーリングにより、任意の範囲の浮動小数点数を生成する方法です。ここでは0以上10未満の値を取得しています。

関連する関数

  • rand() – 整数の乱数を生成する
  • mt_rand() – Mersenne Twister方式による高速な整数乱数生成
  • random_int() – 暗号学的に強い乱数を生成する(PHP 7以降)
  • random_float() – PHP標準にはないが、lcg_value()mt_rand() を用いて浮動小数点乱数を生成するカスタム関数

まとめ

lcg_value は0以上1未満の浮動小数点乱数を簡単に取得できる便利な関数です。引数が不要で手軽に使えるため、確率判定やシミュレーション、数値のランダム化など幅広い場面で活用できます。ただし、暗号学的に強い乱数が必要な場面では random_int() 等の他の関数を検討しましょう。