2012-04-09 3 views
1

StackOverflow가이 질문을하기에 적합한 장소인지 잘 모르겠습니다.이 질문은 하프 프로그래밍과 반 수학 때문입니다. 그리고 내 질문에 어리 석다면 정말 미안 해요^_^난수 생성기에서 루핑을 중지 할시기는 언제입니까?

나는 "몬테 카를로 방법"책을 통해 몬테카를로 시뮬레이션에 대해 공부하고 있습니다. 내가 배워야 할 가장 중요한 것 중 하나는 난수 생성기에 관한 것입니다. RNG의 기본 알고리즘은 다음과 같습니다.
1. 초기화 : S에 분포 μ로부터 시드 S0를 그립니다. t = 1로 설정합니다.
2. 전환 : St = f (St-1)로 설정합니다.
3. 출력 : Ut = g (St)로 설정합니다.
4. 반복 : t = t + 1로 설정하고 2 단계로 돌아 가기.

(μ는 유한 상태 집합 S에 대한 확률 분포이며 입력은 S0이고 우리가 원하는 출력 난수는

입니다.

이해하기 어렵지 않지만 여기서 문제는 반복 횟수에있는 임의의 요소를 보지 못한다는 것입니다. RNG의 루프를 멈출시기를 어떻게 결정할 수 있습니까? 내가 읽은 모든 예제는 RNG를 구현하는데 100 회 반복되며 특정 시드에 대해 동일한 값을 반환합니다. 무작위가 아님> _ <

누군가 내가 누락 된 내용을 설명 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 모두에게 감사합니다

+0

1/2- 프로그래밍 + 1/2- 수학 = 1 컴퓨터 과학; 그것은 확실히 받아 들일 만하다. –

답변

2

특수한 하드웨어없이 컴퓨터에서 임의의 일련의 난수를 얻을 수 없습니다. (특수 하드웨어는 임의성을 제공하기 위해 물리를 사용하여 주사위의 초기 굴림과 동등한 기능을 수행합니다. 전자는 종종 일정한 온도에서 특수 다이오드의 전자 노이즈를 사용하고 다른 것들은 방사능 붕괴 이벤트를 사용합니다.)

특수 하드웨어 , 당신이 생성 할 수있는 것은 의사 난수 (pseudorandom numbers)입니다. 관찰 한 것처럼 항상 동일한 초기 시드에 대해 동일한 시퀀스의 숫자를 생성합니다. 간단한 애플리케이션의 경우, 호출시부터 초기 시드를 생성하는 것으로 벗어날 수 있습니다. 이는 효과적으로 무작위입니다.

"간단한 응용 프로그램"이라고 말하면 나는 암호를 제외한 입니다. (다만,하지만 특히 그.) 가끔

+0

명확한 답변을 보내 주셔서 감사합니다. –

1

당신이 시뮬레이션을 디버깅하려고 할 때, 당신은 실제로 특별히 시작하는 스트림을 보낼 수 있도록는 "무작위"숫자의 재현 스트림을 갖고 싶어 특정 씨앗. 대답 Creating a facet_wrap plot with ggplot2 with different annotations in each plot RCS의 예를 들어

실제 질문에 대답하는 방법을 보여 가기 전에 R 코드

set.seed(1) 
df <- data.frame(x=rnorm(300), y=rnorm(300), cl=gl(3,100)) # create test data 

를 사용하여 데이터의 재현 세트를 작성하여 답을 시작합니다.

관련 문제