첫째, 오늘날의 컴퓨터에서 "무작위 숫자"를 생성 한 경우에는 무작위성 이 없습니다 . 모든 의사 난수 발생기는 결정 론적 방법을 사용합니다. (아마도, 양자 컴퓨터가 그것을 바꿀 것입니다.)
어려운 작업은 실제로 임의의 소스에서 오는 데이터와 의미를 구분할 수없는 출력을 생성하는 알고리즘을 고안하는 것입니다.
시드를 설정하면 의사 난수의 긴 목록에서 특정 알려진 시작 지점에서 시작하는 것이 옳습니다. R, Python 등으로 구현 된 생성기의 경우 목록이 매우 깁니다. 가장 큰 실현 가능한 시뮬레이션 프로젝트조차도 발전기의 '기간'을 초과하지 않아 값이 다시 순환되기 시작할 정도로 충분히 길다.
많은 일반적인 응용에서 사람들은 씨앗을 설정하지 않습니다. 그런 다음 예측할 수없는 시드가 자동으로 선택됩니다 (예 : 운영 체제 시계의 마이크로 초). 의사 난수 발생기는 일반적으로 테스트 배터리에 적용되었으며, 초기 불만족스러운 생성기로 시뮬레이션하기 어려운 문제로 구성되었습니다.
일반적으로 생성기의 출력은 실제 목적 상 의 균일 분포에서 무작위로 선택한 숫자와 구별 할 수없는 값으로 구성됩니다그런 다음 의사 난수는 조작되므로 이항, 포아송, 정규, 지수 등과 같은 다른 분포에서 무작위로 샘플링하는 것과 일치합니다.(0,1).
발전기의 한 가지 테스트는 로 시뮬레이션 된 '관측'의 연속 쌍이
실제로 단위 사각형을 무작위로 채우는 것처럼 보이는지 확인하는 것입니다. (아래 두 번 수행) 약간의 대리석 모양은 고유 한 가변성의 결과입니다. 완벽하게 균일하게 회색으로 보이는 줄거리를 얻는 것은 매우 의심 스러울 것입니다. [일부 해상도에서는 규칙적인 무아레 패턴이있을 수 있습니다. 그 위조 효과가 발생하지 않게하려면 확대를 위 또는 아래로 변경하십시오.]Unif(0,1)
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))
종자를 설정하는 것이 때때로 유용합니다. 이러한 용도는 다음과 같습니다.
프로그래밍 및 디버깅 할 때 예측 가능한 출력을 갖는 것이 편리합니다. 많은 프로그래머들이 프로그램 set.seed
의 시작 부분에 쓰기와 디버깅이 끝날 때까지 진술을합니다.
시뮬레이션에 관해 가르 칠 때. 학생들에게 sample
R 의 함수를 사용하여 공정한 주사위 굴림을 시뮬레이션 할 수 있음을 보여주고 싶다면 속임수를 사용하여 많은 시뮬레이션을 실행하고 목표 이론적 값에 가장 가까운 것을 선택할 수 있습니다 . 그러나 이것은 시뮬레이션이 실제로 어떻게 작동하는지에 대한 비현실적인 인상을 줄 것입니다.
시작시 시드를 설정하면 매번 시뮬레이션이 동일한 결과를 얻습니다. 학생들은 본인의 프로그램 사본을 교정하여 의도 한 결과를 얻을 수 있습니다. 그런 다음 자체 씨앗을 사용하거나 프로그램이 자체 시작 위치를 선택하도록하여 자체 시뮬레이션을 실행할 수 있습니다.
예를 들어, 두 개의 공정한 주사위를 굴릴 때 총 10을 얻을 확률은백만 번의 2 회 주사위 실험으로 2 ~ 3 곳 정도의 정확도를 얻을 수 있습니다. 시뮬레이션 오차의 95 % 마진은 약2 √
3/36=1/12=0.08333333.
2(1/12)(11/12)/106−−−−−−−−−−−−−−−√=0.00055.
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
시뮬레이션과 관련된 통계 분석을 공유 할 때.
오늘날 많은 통계 분석에는 순열 테스트 또는 Gibbs 샘플러와 같은 일부 시뮬레이션이 포함됩니다. 시드를 표시하면 분석을 읽는 사람들이 원하는 경우 결과를 정확하게 복제 할 수 있습니다.
무작위 화와 관련된 학술 기사를 작성할 때. 학술 기사는 보통 여러 차례의 동료 심사를 거칩니다. 플롯은, 예를 들어, 과도 플로팅을 감소시키기 위해 랜덤 지터 포인트를 사용할 수있다. 검토 자 의견에 대한 응답으로 분석을 약간 변경해야하는 경우, 특정 관련 지 터링이 검토 라운드간에 변경되지 않는 것이 좋으며, 이는 특히 nitpicky 검토 자에게는 당황 스러울 수 있으므로 지터 전에 시드를 설정합니다.
2^19937 − 1
입니다. 시드는 생성기가 시작되는이 매우 긴 시퀀스의 지점입니다. 그렇습니다. 결정 론적입니다.