PHP에서 임의의 숫자를 생성하는 것은 특히 게임 개발, 사용자 데이터 처리 및 랜덤 검증 코드와 같은 시나리오에서 매우 일반적인 요구 사항입니다. PHP는 MT_RAND () 및 MT_GETRANDMAX () 가 일반적으로 사용되는 두 가지 함수 인 임의 숫자를 생성하기위한 여러 기능을 제공합니다. mt_rand () 는 일반적으로 임의의 정수를 생성하는 데 사용되는 반면, mt_getrandmax ()는 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>
mt_getrandmax ()는 mt_rand ()가 생성 할 수있는 최대 값을 얻기 위해 PHP가 제공하는 내장 함수입니다. 반환 된 값은 정수이며, 일반적으로 PHP 의 다른 버전과 플랫폼마다 다르지만 일반적으로 값은 2147483647 (즉, 1의 31 of 2의 전력으로 마이너스 1)입니다.
<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>
우리는 일반적으로 a에서 b에서 b에서 b 에서 b 에서 b와 같은 임의의 지정된 범위를 생성해야합니다. 이를 달성하기 위해 범위 스케일링에 mt_rand ()에 의해 생성 된 랜덤 숫자를 사용할 수 있습니다.
$ 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 () 함수는이 범위에서 임의의 정수를 반환합니다.
보다 유연한 제어 범위가 필요하거나 임의의 숫자를 직접 계산하려면 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>
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>
더 미세한 세분화 제어를 통해 범위 생성을 달성하려면 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 로 확장합니다.
mt_rand () 및 mt_getrandmax () 는 PHP에서 고품질 의사 랜덤 번호를 생성하는 데 사용할 수있는 매우 강력한 도구입니다. 실제 애플리케이션에서 MT_RAND ($ min, $ max)를 사용하면 지정된 범위에서 임의의 숫자를 빠르게 생성 할 수 있으며,보다 유연하거나 세련된 제어가 필요한 경우 MT_GetRandMax ()를 결합하여 범위를 조정할 수 있습니다.
이 기사의 도입을 통해 MT_RAND () 및 MT_GETRANDMAX () 함수를 사용하여 지정된 범위에서 임의의 숫자를 생성하는 방법을 이해하고 PHP 프로젝트에 이러한 기능을 유연하게 적용하여 더 많은 임의의 숫자 생성 요구 사항을 달성 할 수 있다고 생각합니다.