기본적으로 요구하는 것은 다음 속성을 가진 이벤트를 생성하는 "반 미정"이벤트 생성기입니다.
각 이벤트가 발생하는 평균 속도는 미리 지정되어 있습니다.
동일한 이벤트는 무작위보다 두 번 연속으로 발생할 가능성이 적습니다.
사건은 완전히 예측할 수 없습니다.
이를 수행하는 한 가지 방법은 먼저 목표 1과 2를 만족시키는 비 랜덤 이벤트 생성기를 구현 한 다음 목표 3을 만족시키기 위해 임의성을 추가하는 것입니다.
비 랜덤 이벤트 생성기의 경우 간단한 디더링 알고리즘을 사용할 수 있습니다 . 구체적으로, p 1 , p 2 , ..., p n 은 사건 1 ~ n 의 상대적 우도이고 s = p 1 + p 2 + ... + p n 은 가중치의 합 이라고합시다 . 그런 다음 다음 알고리즘을 사용하여 비정규 최대 등분 산 이벤트 시퀀스를 생성 할 수 있습니다.
처음에 e 1 = e 2 = ... = e n = 0 이라고하자 .
이벤트를 생성하려면, 각 증가 전자 난 에 의해 P I , 출력 이벤트 k는 있는 전자 K (관계 당신이 원하는 방식을 깨는) 가장 큰 것입니다.
e k 를 s 만큼 줄이고 2 단계부터 반복하십시오.
예를 들어, p A = 5, p B = 4 및 p C = 1 인 세 개의 이벤트 A, B 및 C가 주어지면 이 알고리즘은 다음과 같은 출력 시퀀스와 같은 것을 생성합니다.
A B A B C A B A B A A B A B C A B A B A A B A B C A B A B A
이 30 개의 이벤트 시퀀스에 정확히 15 As, 12 B 및 3 C가 어떻게 포함되어 있는지 확인하십시오. 피할 수 없었던 행에서와 같이 두 번의 As가 몇 번 발생하는 것은 최적으로 분산 되지 는 않았지만 점점 가까워졌습니다.
이제이 순서에 임의성을 추가하기 위해 반드시 상호 배타적이지 않은 몇 가지 옵션이 있습니다.
필립스의 조언을 따르고 적절한 규모의 숫자 N에 대해 N 개의 예정된 이벤트 의 "덱"을 유지할 수 있습니다. 이벤트를 생성해야 할 때마다 데크에서 임의의 이벤트를 선택한 다음 위의 디더링 알고리즘에 의해 다음 이벤트 출력으로 대체하십시오.
이것을 N = 3 인 위의 예에 적용하면 다음과 같이 생성됩니다.
A B A B C A B B A B A B C A A A A B B A B A C A B A B A B A
반면 N = 10은 더 무작위로 보입니다.
A A B A C A A B B B A A A A A A C B A B A A B A C A C B B B
공통 이벤트 A와 B가 셔플 링으로 인해 더 많은 실행으로 끝나는 반면, 드문 C 이벤트는 여전히 상당히 잘 배치되어 있습니다.
디더링 알고리즘에 임의성을 직접 주입 할 수 있습니다. 예를 들어, 2 단계에서 e i 를 p i 씩 증가시키는 대신 p i × random (0, 2) 씩 증가시킬 수 있습니다 . 여기서 random ( a , b )는 a 와 b 사이에 균일하게 분포 된 난수입니다 . 다음과 같은 결과가 출력됩니다.
A B B C A B A A B A A B A B A A B A A A B C A B A B A C A B
또는 e i 를 p i + random (− c , c ) 씩 증가 시켜 ( c = 0.1 × s 인 경우 ) :
B A A B C A B A B A B A B A C A B A B A B A A B C A B A B A
또는 c = 0.5 × s의 경우 :
B A B A B A C A B A B A A C B C A A B C B A B B A B A B C A
가산 법이 곱셈 방식과 비교할 때 일반적인 사건 A 및 B보다 희귀 사건 C에 대해 훨씬 더 강력한 무작위 효과를 갖는 방법에 주목하십시오. 이것은 바람직하거나 바람직하지 않을 수 있습니다. 물론, e i 의 평균 증분 이 p i 와 같은 특성을 유지하는 한 이러한 스킴의 일부 조합 또는 증분에 대한 다른 조정을 사용할 수도 있습니다 .
또는 선택한 이벤트 k 를 임의의 이벤트 k 로 바꾸어 디더링 알고리즘 의 출력 을 교란시킬 수 있습니다 (원시 가중치 p i 에 따라 선택 ). 2 단계에서 출력 할 때 3 단계 에서 동일한 k 를 사용하는 한 디더링 프로세스는 여전히 임의의 변동을 균일하게하는 경향이 있습니다.
예를 들어, 다음은 각 이벤트가 무작위로 선택 될 확률이 10 % 인 출력 예입니다.
B A C A B A B A C B A A B B A B A B A B C B A B A B C A B A
다음은 각 출력이 무작위 일 확률이 50 % 인 예입니다.
C B A B A C A B B B A A B A A A A A B B A C C A B B A B B C
위에서 설명한대로 순전히 무작위 및 디더링 된 이벤트의 혼합을 데크 / 믹싱 풀에 공급하거나 e i가 측정 한 k를 임의로 선택하여 디더링 알고리즘을 무작위 화하는 것을 고려할 수 있습니다 (음수 가중치를 0으로 처리).
추신. 다음은 비교를 위해 동일한 평균 속도를 가진 완전히 임의의 이벤트 시퀀스입니다.
A C A A C A B B A A A A B B C B A B B A B A B A A A A A A A
B C B A B C B A A B C A B A B C B A B A A A A B B B B B B B
C A A B A A B B C B B B A B A B A A B A A B A B A C A A B A
탄젠트 : 데크 기반 솔루션의 경우, 데크를 리필하기 전에 데크를 비울 수 있어야하는지 에 대한 의견 이 일부 논의 되었으므로 몇 가지 데크 충전 전략을 그래픽으로 비교하기로 결정했습니다.
세미 랜덤 코인 플립을 생성하기위한 몇 가지 전략 도표 (평균 50:50의 머리 대 꼬리 비율). 가로 축은 플립 수이고, 세로 축은 (헤드-테일) / 2 = 헤드-플립 / 2로 측정 된 예상 비율과 누적 거리입니다.
플롯의 빨간색과 초록색 선은 비교를위한 두 가지 비 데크 기반 알고리즘을 보여줍니다.
- 레드 라인, 결정 론적 디더링 : 짝수 번째 결과는 항상 선두이고 홀수 번째 결과는 항상 꼬리입니다.
- 녹색 라인, 독립적 인 랜덤 플립 : 각 결과는 무작위로 독립적으로 선택되며, 50 % 확률로 머리와 50 % 확률로 꼬리가 있습니다.
다른 세 줄 (파란색, 자주색, 청록색)은 각각 40 개의 카드로 구성된 데크 기반 전략의 결과를 보여줍니다. 각각 40 개의 카드로 구성된 데크는 처음에 20 개의 "헤드"카드와 20 개의 "테일"카드로 채워져 있습니다.
- 파란색 선, 비우면 채움 : 덱이 비워 질 때까지 카드가 무작위로 뽑힌 다음 20 개의 "헤드"카드와 20 개의 "꼬리"카드로 덱이 리필됩니다.
- 자주색 선, 반쯤 비면 채움 : 덱에 20 장의 카드가 남을 때까지 카드가 무작위로 뽑 힙니다. 갑판은 10 개의 "헤드"카드와 10 개의 "꼬리"카드로 채워집니다.
- 청록색 선, 연속 채우기 : 카드가 무작위로 그려집니다. 짝수 번 추첨은 즉시 "헤드"카드로 교체되고 홀수 번 추첨은 "꼬리"카드로 교체됩니다.
물론, 위의 도표는 무작위 프로세스의 단일 구현 일 뿐이지 만 합리적으로 대표적입니다. 특히, 모든 데크 기반 프로세스는 편향이 제한적이며 빨간색 (결정 론적) 선에 거의 근접한 반면 순수한 임의의 녹색 선은 결국 방황합니다.
(실제로, 0에서 멀어지는 파란색, 보라색 및 녹청 선의 편차는 데크 크기에 의해 엄격하게 제한됩니다. 파란색 선은 0에서 10 단계 이상 멀어 질 수 없으며, 보라색 선은 0에서 15 단계 만 벗어날 수 있습니다) 청록색 선은 0에서 최대 20 단계 떨어져 표류 할 수 있습니다. 물론 실제로 실제로 한계에 도달하는 선은 너무 멀어 질 수 있습니다. 너무 멀리 걸어 다니면 0에 가까워지는 경향이 있기 때문입니다. 떨어져서.)
한눈에, 서로 다른 데크 기반 전략 간에는 분명한 차이가 없지만 (평균적으로 파란색 선은 빨간색 선에 다소 가깝게 유지되고 청록색 선은 다소 더 멀리 떨어져 있음), 파란색 선에 대한 면밀한 검사 뚜렷한 결정 론적 패턴을 보여줍니다 : 40 회 추첨 할 때마다 (점선 회색 세로선으로 표시), 파란색 선은 0에서 빨간색 선과 정확히 일치합니다. 자주색과 청록색 선은 엄격하게 제한되지 않으며 어느 시점에서나 0에서 멀어 질 수 있습니다.
모든 데크 기반 전략에서, 그 변형을 유지하는 중요한 특징은 카드가 데크에서 무작위로 추출되는 동안 데크가 결정적 으로 리필 된다는 사실입니다. 덱을 채우는 데 사용 된 카드가 무작위로 선택 되었다면, 모든 덱 기반 전략은 순수한 무작위 선택 (녹색 선)과 구분할 수 없게됩니다.