現在の位置: ホーム> 最新記事一覧> MT_GETRANDMAX()を使用してMT_RAND()を使用して、指定された範囲で乱数を生成する方法は?詳細な方法分析

MT_GETRANDMAX()を使用してMT_RAND()を使用して、指定された範囲で乱数を生成する方法は?詳細な方法分析

gitbox 2025-06-22

MT_GETRANDMAX()を使用してMT_RAND()を使用して、指定された範囲で乱数を生成する方法は?詳細な方法分析

PHPでは、特にゲーム開発、ユーザーデータ処理、ランダム検証コードなどのシナリオでは、乱数の生成が非常に一般的な要件です。 PHPは、乱数を生成するための複数の関数を提供します。ここで、 MT_RAND()MT_GETRANDMAX()が2つの一般的に使用される関数です。 MT_RAND()は通常、ランダム整数を生成するために使用され、 MT_GETRANDMAX()はMT_RAND()関数の最大値を取得するために使用されます。

1。MT_RAND ()関数の紹介

MT_RAND()は、PHPのMersenne Twisterアルゴリズムに基づく擬似ランダム数生成関数です。その利点は、生成された乱数が良好な均一性と高性能を持っていることです。この関数は、デフォルトで0〜MT_GetRandMax ()の範囲の整数を返します。

 <span><span><span class="hljs-variable">$rand</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>();  </span><span><span class="hljs-comment">// 乱数を生成します,範囲から 0 到着 mt_getrandmax()</span></span><span>
</span></span>

2。MT_GETRANDMAX ()関数の紹介

MT_GETRANDMAX()は、 MT_RAND()が生成できる最大値を取得するために、PHPによって提供される組み込み関数です。返された値は整数であり、通常はPHPの異なるバージョンとプラットフォームで異なりますが、一般に、値は2147483647です(つまり、マイナス1から2の電力)。

 <span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_getrandmax</span></span><span>();  </span><span><span class="hljs-comment">// 得る mt_rand() 生成できる最大値</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$max</span></span><span>;  </span><span><span class="hljs-comment">// 出力最大値,いつもの 2147483647</span></span><span>
</span></span>

3.MT_RAND()を使用して、指定された範囲で乱数を生成します

通常、 aからbまでの乱数など、乱数の指定範囲を生成する必要があります。これを達成するために、範囲スケーリングにMT_RAND()によって生成された乱数を使用できます。

3.1基本方法:式による直接計算

$ minから$ maxの範囲の乱数を生成する必要があるとし、次の式を使用できます。

 <span><span><span class="hljs-variable">$randNum</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-variable">$min</span></span><span>, </span><span><span class="hljs-variable">$max</span></span><span>);
</span></span>

ここでは、 $ minは乱数の下限であり、 $ maxは乱数の上限であり、 mt_rand()関数はこの範囲のランダム整数を返します。

3.2 mt_getrandmax()で範囲を計算する

より柔軟な制御範囲が必要な場合、または自分で乱数を計算したい場合は、 MT_GETRANDMAX()を使用してMT_RAND()の生成範囲を制御できます。たとえば、 0〜500範囲の乱数を生成する場合、最初にMT_RAND()の最大値を決定してからスケーリングできます。

私たちの目標は、 $ minから$ maxの乱数を生成することであると仮定します。次のコードで実装できます。

 <span><span><span class="hljs-variable">$min</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>;
</span><span><span class="hljs-variable">$range</span></span><span> = </span><span><span class="hljs-variable">$max</span></span><span> - </span><span><span class="hljs-variable">$min</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-variable">$randomNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>() % </span><span><span class="hljs-variable">$range</span></span><span> + </span><span><span class="hljs-variable">$min</span></span><span>;
</span></span>

4。例:範囲100〜500の乱数を生成します

100〜500の範囲で乱数を生成したいとしますが、コードは次のとおりです。

 <span><span><span class="hljs-variable">$min</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-number">500</span></span><span>;
</span><span><span class="hljs-variable">$randNum</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-variable">$min</span></span><span>, </span><span><span class="hljs-variable">$max</span></span><span>);  </span><span><span class="hljs-comment">// 使用 mt_rand() 範囲内の乱数を直接生成します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$randNum</span></span><span>;  </span><span><span class="hljs-comment">// 出力1 100 到着 500 間の乱数</span></span><span>
</span></span>

5.カスタムレンジスケーリングには、MT_GETRANDMAX()を使用します

より細かい粒状制御を介して範囲の生成を達成したい場合は、 MT_GETRANDMAX()のリターン値を使用して、生成された乱数をスケーリングできます。 0から100までの乱数を生成すると、次のコードを使用できます。

 <span><span><span class="hljs-variable">$min</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$max</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-variable">$randNum</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>() / </span><span><span class="hljs-title function_ invoke__">mt_getrandmax</span></span><span>() * (</span><span><span class="hljs-variable">$max</span></span><span> - </span><span><span class="hljs-variable">$min</span></span><span>) + </span><span><span class="hljs-variable">$min</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$randNum</span></span><span>;
</span></span>

このコードのロジックは、最初にMT_RAND()を使用して、0からMT_GETRANDMAX()の間の乱数を生成し、ターゲット範囲$ minにスケーリングして$ maxにスケーリングします。

6。概要

MT_RAND()およびMT_GETRANDMAX()は、PHPの非常に強力なツールであり、高品質の擬似ランダム数を生成するために使用できます。実際のアプリケーションでは、 MT_RAND($ min、$ max)を使用すると、指定された範囲で乱数を迅速に生成でき、より柔軟またはより洗練されたコントロールが必要な場合は、 mt_getrandmax()を組み合わせて範囲を調整できます。

この記事の導入を通じて、 MT_RAND()およびMT_GETRANDMAX()関数を使用して、指定された範囲で乱数を生成する方法を理解できると思います。PHPプロジェクトでこれらの機能を柔軟に適用して、より乱数生成要件を達成できます。