Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP mt_srand() 함수 완벽 가이드 – 난수 생성기 시드 초기화 방법

정의 및 사용법

함수 이름에 붙은 접두사 'mt'는 메르센 트위스터(Mersenne Twister)를 의미합니다. mt_srand() 함수는 메르센 트위스터 난수 생성기(random number generator)에 시드(seed)를 설정하는 데 사용됩니다. 시드를 지정하면 난수 생성기가 초기화되어 이후 생성되는 난수의 기준점이 만들어집니다.

대부분의 난수 생성기는 사용 전에 초기 시드 설정이 필요하지만, PHP에서는 mt_srand() 호출이 자동으로 수행되므로 개발자가 직접 호출하는 것은 선택 사항입니다.

이 함수는 어떠한 값도 반환하지 않습니다(void).

구문

mt_srand ([ int $seed [, int $mode = MT_RAND_MT19937 ]] ) : void

매개변수

번호매개변수 및 설명
1seed
난수 생성기의 시드로 사용할 정수값입니다. 생략할 경우 임의의 값이 자동으로 지정됩니다.
2mode
아래 상수 중 하나를 사용하여 동작 방식을 지정합니다.
MT_RAND_MT19937: 고정된 메르센 트위스터 구현을 사용합니다.
MT_RAND_PHP: PHP의 기본(레거시) 구현을 사용합니다.

반환 값

이 함수는 어떤 값도 반환하지 않습니다.

PHP 버전

이 함수는 PHP 4.x, PHP 5.x, 그리고 PHP 7.x 버전에서 모두 사용할 수 있습니다.

예제 1: 고정된 시드로 초기화하기

다음 예제는 rand() 계열 함수를 사용하기 전에 난수 생성기를 먼저 초기화하는 방법을 보여줍니다.

<?php
   mt_srand(5);
   echo "mt_rand(1,100)=", mt_rand(1,100);
?>

출력 결과

실행하면 다음과 같은 결과가 출력될 수 있습니다.

mt_rand(1,100)=12

동일한 시드를 사용하면 항상 같은 난수 시퀀스가 생성되므로, 위 코드는 실행할 때마다 같은 값을 반환합니다. 이러한 특성은 테스트나 재현 가능한 결과가 필요한 경우에 유용합니다.

예제 2: 현재 타임스탬프로 초기화하기

다음 예제는 현재 시간(time())을 시드로 사용하여 난수 생성기를 초기화합니다.

<?php
   mt_srand(time());
   echo "mt_rand()=", mt_rand();
?>

출력 결과

실행 시점에 따라 다음과 유사한 결과가 출력됩니다.

mt_rand()=548287992

time() 함수를 시드로 사용하면 실행 시점마다 다른 값이 지정되므로, 매번 서로 다른 난수를 얻을 수 있습니다.