現在の位置: ホーム> 最新記事一覧> SRAND()関数を介してPHP乱数の分布範囲を制御する方法は?実践的なスキルを共有します

SRAND()関数を介してPHP乱数の分布範囲を制御する方法は?実践的なスキルを共有します

gitbox 2025-09-23
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 序文:記事の内容に関係のない例 PHP コード</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"いらっしゃいませ PHP 乱数ジェネレーターサンプルプログラム!\n"</span></span><span>;
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現存在するの時刻:"</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">str_repeat</span></span><span>(</span><span><span class="hljs-string">"-"</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

---

</span><span><span class="hljs-comment"># 合格する方法 srand() 制御する機能 PHP 乱数の分布範囲?実践的なスキルを共有します</span></span><span>

存在する PHP 一般的に乱数を生成します `</span><span><span class="hljs-title function_ invoke__">rand</span></span><span>()` または `</span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>()` 関数,そして `</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>()` これは、乱数ジェネレーターのシードを設定するために使用されます,从そして能够控制生成的随机数序列。存在する一些需要可重复随机结果的场景中,合理的な使用 `</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>()` 開発者が乱数の分布範囲をより正確に制御するのに役立ちます。

</span><span><span class="hljs-comment">## 1. srand() 基本的な使用法</span></span><span>

`</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>()` 構文は非常にシンプルです:

```php
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$seed</span></span><span>);
</span></span>
  • $シード:乱数ジェネレーターの初期化に使用される種子。同じ種子が同じ乱数のシーケンスを生成します。

例えば:

 <span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">1234</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>); </span><span><span class="hljs-comment">// 各実行は同じ乱数を出力します</span></span><span>
</span></span>

シードを設定することにより、乱数シーケンスを「固定」することができます。これは、ランダムロジックをデバッグしてテストするときに非常に役立ちます。

2。乱数の範囲を制御します

SRAND()は種子の初期化に使用されますが、乱数の範囲を制御することは、実際にはRAND(MIN、MAX)によって行われます。例えば:

 <span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">5678</span></span><span>); </span><span><span class="hljs-comment">// 種子を設定します</span></span><span>
</span><span><span class="hljs-variable">$randomNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">150</span></span><span>); </span><span><span class="hljs-comment">// 随机数范围存在する 50 到着 150</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$randomNumber</span></span><span>;
</span></span>

このコードは保証します:

  1. 乱数は常に50〜150です。

  2. 同じ種子を使用して毎回生成される乱数シーケンスは同じです。

3。実用的なヒント:より「均一な」ランダム分布を生成します

生成された乱数を特定の間隔でより均等に分布させる場合は、種子と数学操作と組み合わせて調整できます。例えば:

 <span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">9876</span></span><span>);
</span><span><span class="hljs-variable">$randomArray</span></span><span> = [];
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-number">10</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-variable">$num</span></span><span> = </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
    </span><span><span class="hljs-variable">$randomArray</span></span><span>[] = </span><span><span class="hljs-variable">$num</span></span><span>;
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">implode</span></span><span>(</span><span><span class="hljs-string">", "</span></span><span>, </span><span><span class="hljs-variable">$randomArray</span></span><span>);
</span></span>

この方法で生成された10の乱数は1〜10であり、アレイの内容は同じシードが使用されるたびにまったく同じです。これは、シミュレートされたテストデータまたは繰り返し実験シナリオで非常に役立ちます。

4。注意すべきこと

  1. PHP 7.1の後、 srand()rand()の使用は推奨されなくなりました。公式は、より安全で均等に分散しているrandom_int()またはrandom_bytes()を使用することをお勧めします。

  2. SRAND()はMT_RAND()の結果を変更しません。MT_SRAND ()はMT_RAND()で使用する必要があります。

  3. 高い予測可能性要件を持つシナリオの場合、固定シードを使用して慎重に使用して、外部によって予測される結果の生成を避けます。

5。概要

PHP乱数の範囲と再現性は、SRAND()によって種子を設定し、 RAND(MIN、MAX)と組み合わせて簡単に制御できます。

  • 固定シード→同じランダムシーケンス。

  • rand(min、max) →値の範囲を制御します。

  • デバッグとテスト→固定シーケンスを使用して実験をシミュレートします。

SRAND()の合理的な使用は、開発、テスト、およびデータシミュレーションシナリオにおける乱数管理の制御可能性と予測可能性を大幅に改善できます。

 <span><span><span class="hljs-comment">// 終了例:テキストとは何の関係もありません</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">str_repeat</span></span><span>(</span><span><span class="hljs-string">"-"</span></span><span>, </span><span><span class="hljs-number">40</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"乱数記事のデモンストレーションは終了します。\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>