Random
Random
게임, 추첨, 보안 토큰까지 "랜덤" 값이 필요한 곳은 많아요. 그런데 무작위라도 쓰임새가 달라요. 단순한 난수가 필요한 곳과 보안에 민감한 곳은 요구 수준이 다르죠. PHP의 Random 확장은 난수 생성기와 난수 관련 함수를 한데 모아둔 장이에요.
출처: Random
본문
난수 생성기와 난수 관련 함수(Random Number Generators and Functions Related to Randomness)를 다루는 장이에요.
- 사전 정의 상수(Predefined Constants)
- 예제(Examples)
Random 함수(Random Functions)
getrandmax— 가능한 가장 큰 난수 값을 보여줘요(Show largest possible random value).lcg_value— 결합 선형 합동 생성기(Combined linear congruential generator).mt_getrandmax— 가능한 가장 큰 난수 값을 보여줘요(Show largest possible random value).mt_rand— 메르센 트위스터 난수 생성기로 난수 값을 생성해요(Generate a random value via the Mersenne Twister Random Number Generator).mt_srand— 메르센 트위스터 난수 생성기를 시드해요(Seeds the Mersenne Twister Random Number Generator).rand— 임의의 정수를 생성해요(Generate a random integer).random_bytes— 암호학적으로 안전한 임의 바이트를 가져와요(Get cryptographically secure random bytes).random_int— 암호학적으로 안전하고 균일하게 선택된 정수를 가져와요(Get a cryptographically secure, uniformly selected integer).srand— 난수 생성기를 시드해요(Seed the random number generator).
Random\Randomizer 클래스
Random\Randomizer— Random\Randomizer 클래스Random\Randomizer::__construct— 새 Randomizer를 생성해요(Constructs a new Randomizer).Random\Randomizer::getBytes— 임의 바이트를 가져와요(Get random bytes).Random\Randomizer::getBytesFromString— 소스 문자열에서 임의 바이트를 가져와요(Get random bytes from a source string).Random\Randomizer::getFloat— 균일하게 선택된 float를 가져와요(Get a uniformly selected float).Random\Randomizer::getInt— 균일하게 선택된 정수를 가져와요(Get a uniformly selected integer).Random\Randomizer::nextFloat— 오른쪽-개방 구간 [0.0, 1.0)에서 float를 가져와요(Get a float from the right-open interval [0.0, 1.0)).Random\Randomizer::nextInt— 양의 정수를 가져와요(Get a positive integer).Random\Randomizer::pickArrayKeys— 배열 키를 임의로 선택해요(Select random array keys).Random\Randomizer::__serialize— Randomizer 객체를 직렬화해요(Serializes the Randomizer object).Random\Randomizer::shuffleArray— 배열의 순열을 가져와요(Get a permutation of an array).Random\Randomizer::shuffleBytes— 문자열의 바이트 단위 순열을 가져와요(Get a byte-wise permutation of a string).Random\Randomizer::__unserialize— 데이터 매개변수를 Randomizer 객체로 역직렬화해요(Deserializes the data parameter into a Randomizer object).Random\IntervalBoundary— Random\IntervalBoundary Enum
Random\Engine 인터페이스·클래스
Random\Engine— Random\Engine 인터페이스Random\Engine::generate— 난수를 생성해요(Generates randomness).Random\CryptoSafeEngine— Random\CryptoSafeEngine 인터페이스Random\Engine\Secure— Random\Engine\Secure 클래스Random\Engine\Secure::generate— 암호학적으로 안전한 난수를 생성해요(Generate cryptographically secure randomness).Random\Engine\Mt19937— Random\Engine\Mt19937 클래스Random\Engine\Mt19937::__construct— 새 Mt19937 엔진을 생성해요(Constructs a new Mt19937 engine).Random\Engine\Mt19937::__debugInfo— 엔진의 내부 상태를 반환해요(Returns the internal state of the engine).Random\Engine\Mt19937::generate— 32비트 난수를 생성해요(Generate 32 bits of randomness).Random\Engine\Mt19937::__serialize— Mt19937 객체를 직렬화해요(Serializes the Mt19937 object).Random\Engine\Mt19937::__unserialize— 데이터 매개변수를 Mt19937 객체로 역직렬화해요(Deserializes the data parameter into a Mt19937 object).Random\Engine\PcgOneseq128XslRr64— Random\Engine\PcgOneseq128XslRr64 클래스Random\Engine\PcgOneseq128XslRr64::__construct— 새 PCG Oneseq 128 XSL RR 64 엔진을 생성해요(Constructs a new PCG Oneseq 128 XSL RR 64 engine).Random\Engine\PcgOneseq128XslRr64::__debugInfo— 엔진의 내부 상태를 반환해요(Returns the internal state of the engine).Random\Engine\PcgOneseq128XslRr64::generate— 64비트 난수를 생성해요(Generate 64 bits of randomness).Random\Engine\PcgOneseq128XslRr64::jump— 엔진을 여러 단계 앞으로 효율적으로 이동해요(Efficiently move the engine ahead multiple steps).Random\Engine\PcgOneseq128XslRr64::__serialize— PcgOneseq128XslRr64 객체를 직렬화해요(Serializes the PcgOneseq128XslRr64 object).Random\Engine\PcgOneseq128XslRr64::__unserialize— 데이터 매개변수를 PcgOneseq128XslRr64 객체로 역직렬화해요(Deserializes the data parameter into a PcgOneseq128XslRr64 object).Random\Engine\Xoshiro256StarStar— Random\Engine\Xoshiro256StarStar 클래스Random\Engine\Xoshiro256StarStar::__construct— 새 xoshiro256** 엔진을 생성해요(Constructs a new xoshiro256** engine).Random\Engine\Xoshiro256StarStar::__debugInfo— 엔진의 내부 상태를 반환해요(Returns the internal state of the engine).Random\Engine\Xoshiro256StarStar::generate— 64비트 난수를 생성해요(Generate 64 bits of randomness).Random\Engine\Xoshiro256StarStar::jump— 엔진을 2^128 단계 앞으로 효율적으로 이동해요(Efficiently move the engine ahead by 2^128 steps).Random\Engine\Xoshiro256StarStar::jumpLong— 엔진을 2^192 단계 앞으로 효율적으로 이동해요(Efficiently move the engine ahead by 2^192 steps).Random\Engine\Xoshiro256StarStar::__serialize— Xoshiro256StarStar 객체를 직렬화해요(Serializes the Xoshiro256StarStar object).Random\Engine\Xoshiro256StarStar::__unserialize— 데이터 매개변수를 Xoshiro256StarStar 객체로 역직렬화해요(Deserializes the data parameter into a Xoshiro256StarStar object).
오류 클래스
Random\RandomError— Random\RandomError 클래스Random\BrokenRandomEngineError— Random\BrokenRandomEngineError 클래스Random\RandomException— Random\RandomException 클래스
더 알아보기
- 보안에 민감한 곳(토큰, 세션)은
random_bytes()/random_int()처럼 암호학적으로 안전한 함수를 쓰는 것이 원칙이에요. Randomizer는 엔진(Engine)을 바꿔 끼울 수 있는 구조라, 어떤 생성기 알고리즘을 쓰는지 명시적으로 제어하고 싶을 때 유용해요.