메르센 트위스터
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
메르센 트위스터는 선형 피드백 시프트 레지스터를 기반으로 하는 의사 난수 생성기이다. MT19937이 널리 사용되며, 매우 긴 주기, 높은 차원에서의 균등 분포, 빠른 속도 등의 장점을 가진다. 하지만 암호학적으로 안전하지 않고, 큰 내부 상태, 초기 상태에 따른 문제 등의 단점도 존재한다. 다양한 변형이 존재하며, 몬테카를로 시뮬레이션, 게임, 통계 분석 등 여러 분야에서 사용된다. 파이썬, C++, MATLAB 등 여러 프로그래밍 언어에서 기본 의사 난수 생성기로 사용되며, 대한민국에서도 과학 기술 및 게임 개발 등에서 널리 활용된다.
더 읽어볼만한 페이지
- 유사난수 생성기 - RC4
RC4는 로널드 라이베스트가 1987년에 설계한 스트림 암호 알고리즘으로, 과거 널리 사용되었으나 보안 취약점 때문에 현재는 안전하지 않은 암호로 간주된다. - 유사난수 생성기 - 선형 합동 생성기
선형 합동 생성기는 초기값을 이용하여 선형 함수를 반복 적용해 의사 난수를 생성하는 간단하고 빠른 알고리즘이지만, 예측 가능성과 낮은 품질로 암호학적 용도나 고품질 난수 시뮬레이션에는 부적합하다. - 소수 - 소수 (수론)
소수는 1과 자기 자신만을 약수로 가지는 1보다 큰 자연수이며, 무한히 많고 정수론의 기본 정리에서 중요한 역할을 하며 다양한 분야에 응용된다. - 소수 - 디리클레 L-함수
디리클레 L-함수는 디리클레 지표로 정의되는 복소함수로, 등차수열에 대한 디리클레 정리를 증명하기 위해 도입되었으며, 리만 제타 함수의 일반화이자 오일러 곱, 함수 방정식 등의 성질을 가지며, 모듈러 형식, 타원 곡선과 관련되어 수론적 L-함수 연구의 핵심이고 암호론, 컴퓨터 과학 등에 응용된다.
메르센 트위스터 | |
---|---|
기본 정보 | |
유형 | 유사난수 생성기 |
설계자 | 마쓰모토 마코토 니시무라 다쿠지 |
최초 발표 | 1997년 |
기술 정보 | |
주기 | 2^19937 - 1 (메르센 소수) |
상태 크기 (비트) | 19937 |
출력 크기 (비트) | 32 또는 64 (변형에 따라 다름) |
알고리즘 | 선형 피드백 시프트 레지스터 (LFSR) |
구현 언어 | C C++ 자바 파이썬 매트랩 |
특징 | |
장점 | 긴 주기 양호한 균등성 빠른 생성 속도 |
단점 | 암호학적으로 안전하지 않음 |
활용 | |
사용 분야 | 몬테카를로 방법 시뮬레이션 게임 개발 |
기타 | |
변종 | MT19937 MT19937-64 SFMT (SIMD-oriented Fast Mersenne Twister) |
참고 문헌 | Matsumoto, M.; Nishimura, T. (1998). "Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator". ACM Transactions on Modeling and Computer Simulation. 8 (1): 3–30. doi:10.1145/272991.272995. S2CID 3332028. John Savard, The Mersenne Twister |
2. 특징
메르센 트위스터는 선형 피드백 시프트 레지스터(LFSR)를 기반으로 하는 의사 난수 생성기이다. GFSR(Generalized Feedback Shift Register)을 꼬아서(Twisted) 조율(Tempered)하는 방식으로 작동한다.
메르센 트위스터의 특징은 다음과 같다.
'''장점'''
- 관대한 라이선스를 따르며, CryptMT를 제외한 모든 변형에 특허가 없다.[13]
- Diehard 테스트와 대부분의 TestU01 테스트(전부는 아님)를 포함하여 수많은 통계적 무작위성 테스트를 통과한다.[13]
- 의 매우 긴 주기를 가진다. 이는 대부분의 프로그램에서 충분한 고유한 조합을 제공한다. 은 대략 이다. 다만, 긴 주기가 난수 생성기의 품질을 보장하는 것은 아니다. 많은 구형 소프트웨어 패키지에서 흔히 사용되는 와 같은 짧은 주기는 문제가 될 수 있다.[14]
- 623차원까지 동일분포되어 있다. 즉, 난수를 623개까지 짝지어서 623차원 하이퍼큐브에 해당하는 좌표에 점을 찍어도 일관성을 발견할 수 없으며, 따라서 연속된 숫자들 사이의 관계가 매우 낮다.
- 일반적으로 하드웨어 구현 방식보다 난수를 더 빠르게 생성한다. 한 연구에 따르면 메르센 트위스터는 하드웨어로 구현된 프로세서 기반 RDRAND 명령어 세트보다 64비트 부동 소수점 난수를 약 20배 더 빠르게 생성한다.[15]
'''단점'''
- TinyMT 변형을 사용하지 않는 한 약 2.5 kB의 비교적 큰 상태 버퍼를 사용한다.
- SFMT 변형을 사용하지 않는 한 현대적인 기준에 비해 중간 수준의 처리량을 보인다.[16]
- TestU01 스위트의 Crush 및 BigCrush에서 두 가지 명확한 실패(선형 복잡성)를 보인다. 이 테스트는 메르센 트위스터와 마찬가지로 -대수를 기반으로 한다.[13]
- 시드 값만 다르고 다른 매개변수는 동일한 여러 인스턴스는 독립적인 난수 생성기가 필요한 몬테카를로 시뮬레이션에 일반적으로 적합하지 않지만, 여러 매개변수 값 집합을 선택하는 방법이 존재한다.[17][18]
- 낮은 확산성: 초기 상태가 매우 비무작위적인 경우, 특히 초기 상태에 0이 많은 경우 무작위성 테스트를 통과하는 출력을 생성하는 데 오랜 시간이 걸릴 수 있다. 이로 인해 거의 동일한 초기 상태로 시작된 두 개의 생성기 인스턴스는 결국 달라지기 전에 많은 반복 동안 거의 동일한 시퀀스를 출력한다. MT 알고리즘의 2002년 업데이트로 초기화가 개선되어 이러한 상태에서 시작할 가능성이 매우 낮아졌다.[19] GPU 버전(MTGP)이 훨씬 더 좋다고 한다.[20]
- 1보다 0이 더 많은 하위 시퀀스를 포함한다. 이는 많은 제로 상태에서 복구를 어렵게 만드는 낮은 확산 특성에 추가된다.
- CryptMT 변형을 사용하지 않는 한 암호학적으로 안전하지 않다. 그 이유는 충분한 수의 반복(MT19937의 경우 624개, 이는 향후 반복이 생성되는 상태 벡터의 크기이므로)을 관찰하면 모든 향후 반복을 예측할 수 있기 때문이다.
2. 1. 장점
- 관대한 라이선스를 따르며, CryptMT를 제외한 모든 변형에 특허가 없다.[13]
- Diehard 테스트와 대부분의 TestU01 테스트(전부는 아님)를 포함하여 수많은 통계적 무작위성 테스트를 통과한다.[13]
- 219937-1의 매우 긴 주기를 가진다. 긴 주기가 난수 생성기의 품질을 보장하는 것은 아니지만, 많은 구형 소프트웨어 패키지에서 흔히 사용되는 232와 같은 짧은 주기는 문제가 될 수 있다.[14]
- 모든 1 ≤ k ≤ 623 에 대해 32비트 정확도로 k-분포된다(''k''-분포의 정의는 아래 참조).
- 일반적으로 하드웨어 구현 방식보다 난수를 더 빠르게 생성한다. 한 연구에 따르면 메르센 트위스터는 하드웨어로 구현된 프로세서 기반 RDRAND 명령어 세트보다 64비트 부동 소수점 난수를 약 20배 더 빠르게 생성한다.[15]
2. 2. 단점
메르센 트위스터는 다음과 같은 단점을 갖는다.- 암호학적으로 안전하지 않음: 메르센 트위스터는 선형 점화식에 의해 생성되므로 예측 가능하다. 따라서 암호학적 용도로는 사용할 수 없다.[61] CryptMT나 Fubuki는 메르센 트위스터를 기반으로 하지만, 단순히 그 출력을 키 스트림으로 평문과 합성하고 있는 것은 아니다.
- 큰 내부 상태: MT19937은 2.5kB의 내부 상태를 필요로 한다. 이는 메모리가 제한된 환경에서는 단점이 될 수 있다. 개발자에 의한 구현에서는 32비트 버전에서 624워드 (2496바이트)의 워킹 메모리를 필요로 한다.[16]
- 초기 상태에 따른 문제: 초기 상태에 0이 많으면 출력에도 0이 많아지는 경향이 있다. 이는 초기화 개선으로 완화될 수 있다. 개발자가 제공하는 구현에서는 초기화에 내부 상태 공간의 작은 의사 난수 생성계를 이용하고 있으므로(그 작음 때문에, 모두 0과 같은 열은 생성할 수 없으므로) 이는 문제가 되지 않는다. 독자적인 초기화 처리를 사용하는 경우에는 문제가 발생할 가능성이 있다.[19]
- 선형 복잡성: TestU01의 BigCrush 테스트에서 실패한다. 이는 메르센 트위스터가 F2-대수를 기반으로 하기 때문이다.[13]
3. 알고리즘 상세
메르센 트위스터 알고리즘은 유한 이진 체 에 대한 행렬 선형 점화식을 기반으로 한다. 이 알고리즘은 상태 비트 반전과 템퍼링을 갖는 일반화된 피드백 시프트 레지스터(TGFSR)의 유리 정규형(TGFSR(R))이다.[4] 기본적인 아이디어는 간단한 점화식을 통해 일련의 를 정의한 다음 형태의 숫자를 출력하는 것이다. 여기서 ''T''는 템퍼링 행렬이라고 하는 가역 행렬이다.
일반적인 알고리즘은 다음과 같은 수량으로 특징지어진다.
- ''w'': 단어 크기(비트 수)
- ''n'': 점화식의 차수
- ''m'': 중간 단어, 계열 를 정의하는 점화식에 사용되는 오프셋,
- ''r'': 한 단어의 분리점, 또는 하위 비트마스크의 비트 수,
- ''a'': 유리 정규형 꼬임 행렬의 계수
- ''b'', ''c'': TGFSR(R) 템퍼링 비트마스크
- ''s'', ''t'': TGFSR(R) 템퍼링 비트 시프트
- ''u'', ''d'', ''l'': 추가적인 메르센 트위스터 템퍼링 비트 시프트/마스크
이 메르센 소수라는 제약 조건이 있다.
계열 는 ''w'' 비트 수량의 계열로 다음과 같은 점화식을 갖는다.
:
여기서 는 비트 벡터의 연결(상위 비트는 왼쪽에 위치), 는 비트 단위 배타적 논리합(XOR), 는 의 상위 비트를 의미하고, 는 의 하위 ''r'' 비트를 의미한다.
첨자는 모두 ''-n''만큼 오프셋될 수 있다.
:
여기서 는 이전에 생성된 값을 기준으로 계열에서 다음에 생성된 값이다.
꼬임 변환 ''A''는 유리 정규형으로 다음과 같이 정의된다.
:
는 항등 행렬이다. 유리 정규형은 ''A''와의 곱셈을 효율적으로 표현할 수 있다는 이점이 있다. (여기서 행렬 곱셈은 에서 수행되고 따라서 비트 단위 XOR이 덧셈을 대신한다)
:
여기서 는 의 최하위 비트이다.
TGFSR(R)과 마찬가지로, 메르센 트위스터는 템퍼링 변환과 함께 연결되어 등분포의 차원 감소를 보상한다. 이는 가역 행렬 ''T''에 대해 인 행렬 ''A''를 사용하는 것과 같다.
''A''와 마찬가지로, 템퍼링 변환을 쉽게 계산할 수 있도록 선택하여 실제로 ''T'' 자체를 구성하지 않는다. 이 템퍼링은 메르센 트위스터의 경우 다음과 같이 정의된다.
:
여기서 는 계열의 다음 값이고, 는 임시 중간 값이며, 는 알고리즘에서 반환된 값이며, 과 는 비트 단위 좌우 시프트이고, 는 비트 단위 AND이다. 첫 번째 및 마지막 변환은 하위 비트 등분포를 개선하기 위해 추가된다.
MT19937의 계수는 다음과 같다.
변수 | 값 |
---|---|
w, n, m, r | 32, 624, 397, 31 |
a | 9908B0DF16 |
u, d | 11, FFFFFFFF16 |
s, b | 7, 9D2C568016 |
t, c | 15, EFC6000016 |
l | 18 |
메르센 트위스터의 32비트 구현은 일반적으로 ''d'' = FFFFFFFF16을 갖는다.
MT19937-64의 계수는 다음과 같다.[5]
변수 | 값 |
---|---|
w, n, m, r | 64, 312, 156, 31 |
a | B5026F5AA96619E916 |
u, d | 29, 555555555555555516 |
s, b | 17, 71D67FFFEDA6000016 |
t, c | 37, FFF7EEE00000000016 |
l | 43 |
4. k-분포
주기 ''P''의 ''w''비트 정수로 구성된 의사 난수 시퀀스 가 특정 조건을 만족하면 ''v''비트 정확도로 ''k-분포''되었다고 한다.
trunc''v''(''x'')를 ''x''의 선두 ''v''비트로 구성된 수라고 할 때, 다음 ''k''개의 ''v''비트 벡터 ''P''개를 고려한다.
:.
그러면 개의 가능한 비트 조합 각각이 한 주기 동안 동일한 횟수로 나타나며, 단, 모든 0 조합은 한 번 덜 나타난다.[13]
5. 변형
메르센 트위스터에는 여러 변형이 존재하며, 각각 다른 특성을 가진다.
- MT19937: 가장 널리 사용되는 메르센 트위스터 변형이다. 32비트 정수를 생성하며, 주기는 이다. 623차원까지 동일분포되어 있으며, 다이하드 테스트를 통과한다. 그러나 암호학적으로 안전하지 않으며, 초기 상태 초기화에 문제가 있을 수 있다.[4] MT19937의 계수는 다음과 같다.
변수 | 값 |
---|---|
w (단어 크기) | 32 |
n (점화식 차수) | 624 |
m (중간 단어) | 397 |
r (분리점) | 31 |
a | 9908B0DF|0x9908B0DF영어 |
u, d | 11, FFFFFFFF|0xFFFFFFFF영어 |
s, b | 7, 9D2C5680|0x9D2C5680영어 |
t, c | 15, EFC60000|0xEFC60000영어 |
l | 18 |
- MT19937-64: MT19937의 64비트 변형으로, 64비트 정수를 생성한다. 주기는 MT19937과 동일하며, 623차원 동일분포 등의 특성을 가진다.[5] MT19937-64의 계수는 다음과 같다.
변수 | 값 |
---|---|
w (단어 크기) | 64 |
n (점화식 차수) | 312 |
m (중간 단어) | 156 |
r (분리점) | 31 |
a | B5026F5AA96619E9|0xB5026F5AA96619E9영어 |
u, d | 29, 5555555555555555|0x5555555555555555영어 |
s, b | 17, 71D67FFFEDA60000|0x71D67FFFEDA60000영어 |
t, c | 37, FFF7EEE000000000|0xFFF7EEE000000000영어 |
l | 43 |
- CryptMT: 메르센 트위스터를 기반으로 하는 스트림 암호이자 암호학적으로 안전한 의사 난수 생성기(CSPRNG)이다.[6][7] eCRYPT 네트워크의 eSTREAM 프로젝트에 제출되었으며, 소프트웨어 특허를 받았다.[6]
- SFMT (SIMD-oriented Fast Mersenne Twister): SIMD 연산을 활용하여 고속화를 꾀한 변형이다.[9] 128비트 SIMD에서 빠르게 작동하며, 메르센 트위스터보다 약 2배 빠르다.[10] 또한, v-비트 정확도의 균등분포 속성이 개선되었으며, 초기 상태의 제로 과잉으로부터 더 빠르게 복구된다.[10] 2607 − 1에서 2216091 − 1까지 다양한 주기를 지원하며, 인텔 SSE2 및 PowerPC AltiVec를 지원한다. PlayStation 3의 Cell BE를 사용하는 게임에도 사용된다.[11]
6. 응용
메르센 트위스터는 몬테카를로 시뮬레이션, 게임, 통계 분석 등 다양한 분야에서 사용된다. 여러 프로그래밍 언어 및 소프트웨어에서 기본 의사 난수 생성기(PRNG)로 사용되고 있다. 사용되는 곳은 다음과 같다.
분야 | 사용처 |
---|---|
프로그래밍 언어 | Dyalog APL, IDL, R, Ruby, Free Pascal, PHP, Python (NumPy에서도 사용 가능), CMU Common Lisp, Embeddable Common Lisp, Steel Bank Common Lisp, Julia |
Unix 계열 라이브러리 및 소프트웨어 | GLib, GNU Multiple Precision Arithmetic Library, GNU Octave, GNU Scientific Library |
기타 | Microsoft Excel, GAUSS, gretl, Stata, SageMath, Scilab, Maple, MATLAB |
Apache Commons, 표준 C++(C++) 라이브러리 (C++11부터), 및 Mathematica에서도 사용할 수 있다. Boost C++ Libraries, CUDA 라이브러리 및 NAG Numerical Library를 포함한 많은 프로그램 라이브러리에서 추가 구현이 제공된다.
SPSS와 SAS에서도 PRNG 중 하나로 사용된다. Stata의 기본 PRNG이다.
7. 대안
WELL은 메르센 트위스터보다 더 빠른 회복 속도, 동등한 무작위성을 제공한다.[57]
마르살리아의 Xorshift 생성기와 그 변형은 LFSR 클래스에서 가장 빠르다.[58]
PCG 계열은 캐시 지역성이 더 좋고, 현대적인 분석 방법을 사용했을 때 감지 가능한 편향이 적은 보다 현대적인 장주기 생성기이다.[60]
8. 기타
도널드 커누스가 "이름이 너무 길다"라고 지적하여 현재 이름으로 변경되었다. 'MT'는 개발자 마츠모토 마코토와 니시무라 타쿠지의 이니셜을 의미하기도 한다.
참조
[1]
간행물
Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator
https://dl.acm.org/d[...]
[2]
서적
Machine Learning
CRC Press
[3]
웹사이트
The Mersenne Twister
http://www.quadibloc[...]
[4]
간행물
Twisted GFSR generators
http://ir.lib.hirosh[...]
[5]
웹사이트
std::mersenne_twister_engine
http://en.cppreferen[...]
2015-07-20
[6]
웹사이트
CryptMt and Fubuki
https://web.archive.[...]
eCRYPT
2017-11-12
[7]
웹사이트
Cryptographic Mersenne Twister and Fubuki Stream/Block Cipher
http://eprint.iacr.o[...]
[8]
arXiv
Variants of Mersenne Twister Suitable for Graphic Processors
[9]
웹사이트
SIMD-oriented Fast Mersenne Twister (SFMT)
http://www.math.sci.[...]
2015-10-04
[10]
웹사이트
SFMT:Comparison of speed
http://www.math.sci.[...]
2015-10-04
[11]
웹사이트
PlayStation3 License
http://www.scei.co.j[...]
2015-10-04
[12]
웹사이트
Tiny Mersenne Twister (TinyMT)
http://www.math.sci.[...]
2015-10-04
[13]
문서
TestU01: "A C library for empirical testing of random number generators"
http://www.iro.umont[...]
[14]
문서
Note: 219937 is approximately 4.3 × 106001; this is many orders of magnitude larger than the estimated number of particles in the observable universe, which is 1087.
[15]
간행물
Radio-flaring Ultracool Dwarf Population Synthesis
2017-08-10
[16]
웹사이트
SIMD-oriented Fast Mersenne Twister (SFMT): twice faster than Mersenne Twister
http://www.math.sci.[...]
2017-03-27
[17]
웹사이트
Dynamic Creation of Pseudorandom Number Generators
http://www.math.sci.[...]
2015-07-19
[18]
웹사이트
Efficient Jump Ahead for F2-Linear Random Number Generators
http://www.iro.umont[...]
2015-11-12
[19]
웹사이트
mt19937ar: Mersenne Twister with improved initialization
http://www.math.sci.[...]
2015-10-04
[20]
간행물
Pseudo-Random Number Generators for Vector Processors and Multicore Processors
2015-05-01
[21]
웹사이트
Random link
http://help.dyalog.c[...]
2020-06-04
[22]
웹사이트
RANDOMU (IDL Reference)
http://www.exelisvis[...]
2013-08-23
[23]
웹사이트
Random Number Generators
https://cran.r-proje[...]
2012-05-29
[24]
웹사이트
"Random" class documentation
http://www.ruby-doc.[...]
2012-05-29
[25]
웹사이트
random
http://www.freepasca[...]
2013-11-28
[26]
웹사이트
mt_rand — Generate a better random value
http://php.net/manua[...]
2016-03-02
[27]
웹사이트
NumPy 1.17.0 Release Notes — NumPy v1.21 Manual
https://numpy.org/do[...]
2021-06-29
[28]
웹사이트
9.6 random — Generate pseudo-random numbers
https://docs.python.[...]
2012-05-29
[29]
웹사이트
8.6 random — Generate pseudo-random numbers
https://docs.python.[...]
2012-05-29
[30]
웹사이트
random — Generate pseudo-random numbers — Python 3.8.3 documentation
https://docs.python.[...]
2020-06-23
[31]
웹사이트
Design choices and extensions
http://common-lisp.n[...]
2014-02-03
[32]
웹사이트
Random states
https://common-lisp.[...]
2015-09-20
[33]
웹사이트
Random Number Generation
http://www.sbcl.org/[...]
[34]
웹사이트
Random Numbers · The Julia Language
https://docs.juliala[...]
2022-06-21
[35]
웹사이트
Random Numbers: GLib Reference Manual
https://developer.gn[...]
[36]
웹사이트
Random Number Algorithms
http://gmplib.org/ma[...]
2013-11-21
[37]
웹사이트
16.3 Special Utility Matrices
https://www.gnu.org/[...]
[38]
웹사이트
Random number environment variables
https://www.gnu.org/[...]
2013-11-24
[39]
간행물
On the accuracy of statistical procedures in Microsoft Excel 2010
[40]
웹사이트
GAUSS 14 Language Reference
http://www.aptech.co[...]
[41]
문서
uniform
http://gretl.sourcef[...]
Gretl Function Reference
[42]
웹사이트
New random-number generator—64-bit Mersenne Twister
https://www.stata.co[...]
[43]
웹사이트
Probability Distributions — Sage Reference Manual v7.2: Probablity
http://doc.sagemath.[...]
[44]
웹사이트
grand - Random numbers
https://help.scilab.[...]
[45]
웹사이트
random number generator
http://www.maplesoft[...]
2013-11-21
[46]
웹사이트
Random number generator algorithms
http://www.mathworks[...]
[47]
웹사이트
Data Generation
http://commons.apach[...]
[48]
웹사이트
Random Number Generation in C++11
https://isocpp.org/f[...]
[49]
웹사이트
std::mersenne_twister_engine
http://en.cppreferen[...]
2012-09-25
[50]
문서
Mathematica Documentation
http://reference.wol[...]
[51]
웹사이트
boost/random/mersenne_twister.hpp
http://www.boost.org[...]
2012-05-29
[52]
웹사이트
Host API Overview
http://docs.nvidia.c[...]
2016-08-02
[53]
웹사이트
G05 – Random Number Generators
http://www.nag.co.uk[...]
2012-05-29
[54]
웹사이트
Random Number Generators
http://pic.dhe.ibm.c[...]
2013-11-21
[55]
웹사이트
Using Random-Number Functions
http://support.sas.c[...]
2013-11-21
[56]
문서
set rng -- Set which random-number generator (RNG) to use
https://www.stata.co[...]
Stata help
[57]
서적
Uniform Random Number Generators
Springer-Verlag
[58]
웹사이트
xorshift*/xorshift+ generators and the PRNG shootout
http://prng.di.unimi[...]
[59]
논문
Implementing 64-bit Maximally Equidistributed F2-Linear Generators with Mersenne Prime Period
https://github.com/s[...]
2018
[60]
웹사이트
The PCG Paper
https://www.pcg-rand[...]
2017-07-27
[61]
웹사이트
アーカイブされたコピー
http://www.suspekt.o[...]
2008-10-17
[62]
웹사이트
9.6 random — Generate pseudo-random numbers
http://docs.python.o[...]
2012-05-29
[63]
웹사이트
8.6 random — Generate pseudo-random numbers
http://docs.python.o[...]
2012-05-29
[64]
웹사이트
"Random" class documentation
http://www.ruby-doc.[...]
2012-05-29
[65]
웹사이트
Random Number Generators
http://cran.r-projec[...]
2012-05-29
[66]
웹사이트
mt_srand
http://php.net/manua[...]
2012-05-29
[67]
웹사이트
std::mersenne_twister_engine
http://en.cppreferen[...]
2012-09-25
[68]
문서
http://help.sap.com/[...]
[69]
문서
http://flashexperime[...]
[70]
문서
AS3-Utilities/Random.as at master · skyboy/AS3-Utilities · GitHub
https://github.com/s[...]
[71]
웹사이트
http://adrianhoe.com[...]
[72]
웹사이트
Pseudo random number generators
https://www.agner.or[...]
[73]
웹사이트
Mersenne Twist PRNG
https://www.cs.hmc.e[...]
[74]
웹사이트
http://www.mrpt.org/[...]
[75]
웹사이트
RandomLib
http://randomlib.sou[...]
[76]
웹사이트
Mersenne Twister in Clojure – hackinghat.com
http://www.hackingha[...]
[77]
웹사이트
http://clean.cs.ru.n[...]
[78]
웹사이트
http://adam.ierymenk[...]
[79]
웹사이트
http://code.msdn.mic[...]
[80]
웹사이트
Mersenne Twister
https://cliki.net/Me[...]
[81]
웹사이트
phobos/random.d at master · dlang/phobos · GitHub
https://github.com/D[...]
[82]
웹사이트
GitHub - jj1bdx/sfmt-erlang: sfmt-erlang: SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang
https://github.com/j[...]
[83]
웹사이트
mt.zip
https://www.rapideup[...]
[84]
웹사이트
Excel Random Generator based on Mersenne Twister - NtRand
https://www.ntrand.c[...]
[85]
웹사이트
http://www.falvotech[...]
[86]
웹사이트
http://theo.phys.sci[...]
[87]
웹사이트
Mersenne Twister - Pastebin.com
https://pastebin.com[...]
[88]
웹사이트
GSL - GNU Scientific Library - GNU Project - Free Software Foundation
https://www.gnu.org/[...]
[89]
웹사이트
http://www.augustsso[...]
[90]
웹사이트
mersenne-random-pure64: Generate high quality pseudorandom numbers purely using a Mersenne Twister
https://hackage.hask[...]
[91]
웹사이트
Sean Luke : Code
https://cs.gmu.edu/~[...]
[92]
웹사이트
Mersenne Twister in Java Script
http://www.math.sci.[...]
[93]
웹사이트
a Mersenne Twister implementation in javascript. Makes up for Math.random() not letting you specify a seed value. · GitHub
https://gist.github.[...]
[94]
웹사이트
Luiz Henrique de Figueiredo: Libraries and tools for Lua
https://web.tecgraf.[...]
[95]
웹사이트
http://www.mitrionic[...]
[96]
웹사이트
http://www.wolfgang-[...]
[97]
웹사이트
'Search for "module:Math::Random::MT::Auto" - metacpan.org'
https://metacpan.org[...]
[98]
웹사이트
Pure-PHP Mersenne Twister
https://kingfisher.n[...]
[99]
웹사이트
R: Random Number Generation
https://stat.ethz.ch[...]
[100]
웹사이트
Mersenne twister
https://web.archive.[...]
[101]
웹사이트
http://mlton.org/cgi[...]
[102]
웹사이트
http://www.simul8.co[...]
[103]
웹사이트
Mersenne Twister - Random number generator · GitHub
https://gist.github.[...]
[104]
웹사이트
http://www.quantcode[...]
[105]
웹사이트
Mersenne Twister in BASIC
http://www.math.sci.[...]
[106]
논문
Mersenne twister: a 623-dimensionally equidistributed uniform pseudorandom number generator
http://doi.acm.org/1[...]
1998
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com