PHP에서 임의의 숫자를 생성하는 것은 특히 게임 개발, 암호화 및 데이터 시뮬레이션과 같은 응용 프로그램 시나리오를 다룰 때 일반적인 작업입니다. PHP는 rand () , mt_rand () 및 random_int () 와 같은 임의 숫자를 생성하는 여러 기능을 제공합니다. 생성 된 랜덤 숫자의 품질과 효율성을 향상시키기 위해 srand () 함수의 합리적인 사용이 핵심 역할을 할 수 있습니다.
이 기사는 srand () 함수를 소개하고 더 나은 결과를 얻기 위해 다른 임의의 숫자 함수와 함께 사용하는 방법에 대해 논의합니다.
php에서 srand () 함수는 랜덤 번호 생성기의 시드를 설정하는 데 사용됩니다. 종자 값은 무작위 숫자 생성의 시작점을 결정합니다. 종자 값이 동일한 경우 임의 숫자 시퀀스는 매번 동일하므로 디버깅 및 테스트에 매우 유용합니다.
rand () 및 mt_rand ()는 둘 다 내부 의사 랜덤 번호 생성기를 기반으로 랜덤 숫자를 생성하고 Srand ()는 이 생성기의 시드를 설정하는 데 사용됩니다. 기본적으로 srand ()가 명시 적으로 호출되지 않으면 PHP는 현재 시간 또는 시스템 상태를 시드 값으로 사용하므로 각 실행에서 생성 된 임의의 순서는 다릅니다.
RAND () 는 PHP에서 가장 일반적으로 사용되는 기능 중 하나입니다. srand () 가 설정 한 종자를 사용하여 의사 랜덤 번호를 생성합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 씨앗을 설정하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">12345</span></span><span>);
</span><span><span class="hljs-comment">// 생성 a0도착하다100사이에 임의 번호</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">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>이 예에서 Srand (12345)는 발전기 시드를 12345로 설정하고 Rand (0, 100)는 0과 100 사이의 난수를 생성합니다. 코드가 실행될 때마다 생성 된 임의 숫자는 고정 된 시드를 설정하기 때문에 동일합니다.
PHP는 또한 Mersenne Twister를 기반으로하는 MT_RAND () 함수를 제공합니다. 따라서 실제 개발에서 rand () 대신 mt_rand ()를 사용하는 것이 좋습니다.
mt_rand () 도 srand ()를 사용하여 종자를 설정하지만, 생성하는 랜덤 숫자의 품질과 속도는 일반적으로 rand () 보다 낫습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 씨앗을 설정하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">12345</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-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>rand () 와 마찬가지로 mt_rand () 도 srand () 에 의해 설정된 종자의 영향을받습니다.
높은 보안 요구 사항이 필요한 시나리오의 경우 PHP 7은 암호화 수준 랜덤 숫자를 제공 할 수있는 random_int () 함수를 도입합니다. rand () 및 mt_rand () 와 달리 random_int ()는 씨앗을 설정하기 위해 srand () 를 명시 적으로 사용하지 않아도됩니다 (예 : 운영 체제가 제공하는 임의 번호 생성기)에 의존하기 때문입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 사용 random_int() 랜덤 숫자를 생성합니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">random_int</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Random_int ()는 예측할 수없고 보안이 강한 임의의 숫자를 생성하므로 먼저 암호화 또는 보안이 필요한 기타 응용 프로그램에 먼저 사용해야합니다.
실제 개발에서 srand ()는 종종 다른 요구를 충족시키기 위해 다른 임의의 숫자 함수와 함께 사용됩니다. 시드를 설정하지 않으면 Rand () 및 MT_Rand () 에 의해 생성 된 랜덤 숫자 시퀀스는 매번 특정 임의의 결과를 재현해야 할 때마다 이상적이지 않을 수 있습니다.
SRAND () 로 시드를 올바르게 설정함으로써 난수의 반복성을 보장 할 수 있으므로 디버깅 및 테스트가 더 쉬워집니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 씨앗을 설정하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">98765</span></span><span>);
</span><span><span class="hljs-comment">// 联合사용 mt_rand() 그리고 random_int()</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>) . </span><span><span class="hljs-string">"\n"</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-title function_ invoke__">random_int</span></span><span>(</span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>; </span><span><span class="hljs-comment">// 사용 random_int() 안전한 랜덤 숫자를 생성합니다</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>이 예에서는 먼저 시드 Srand (98765)를 설정 한 다음 각각 mt_rand () 및 random_int ()를 사용하여 랜덤 숫자를 생성합니다. mt_rand () 와 random_int () 의 조합을 사용하면 다른 시나리오에서 임의 번호 요구 사항을 충족 할 수 있습니다.
srand () 함수는 PHP 랜덤 번호 생성기의 시드를 제어하는 핵심 도구입니다. rand () 및 mt_rand () 와 같은 함수와 함께 사용되면 랜덤 숫자의 제어 가능성과 재현성을 보장 할 수 있습니다. 그러나 높은 보안 응용 프로그램의 경우 srand () 에 의존하지 않으며 더 강한 임의성을 제공하는 Random_int ()가 권장됩니다.
일반적으로 적절한 기능을 선택하고 임의의 숫자를 생성 할 때 종자를 올바르게 설정하면 성능을 향상시키면서 임의 숫자를 생성하는 품질과 안전성을 향상시킬 수 있습니다.