가짜 균일 난수 : 실제 균일 데이터보다 더 균일하게 분포


43

나는 균일하게 분포 된 것처럼 보이는 난수를 생성하는 방법을 찾고 있습니다. 모든 테스트는 그것들이 실제 균일 한 데이터보다 더 고르게 분포 되어 있다는 점을 제외하고는 균일 한 것으로 보입니다 .

"참된"균일 한 랜덤에 대한 문제는 가끔씩 클러스터된다는 것입니다. 이 효과는 샘플 크기가 작을수록 강해집니다. 대략적으로 말해서 : U [0; 1]에서 두 개의 균일 난수를 그릴 때, 0.1의 범위 내에있을 확률은 약 10 %이고, 0.01에있을 확률은 1 %입니다.

그래서 나는 균일 한 난수 보다 더 고르게 분포 된 난수를 생성하는 좋은 방법을 찾고 있습니다.

유스 케이스 예 : 컴퓨터 게임을하고 있다고 가정하고 보물을 무작위로 맵에 배치하고 싶습니다 (다른 것은 신경 쓰지 않음). 보물이 한곳에있는 것을 원하지 않습니다.지도 전체에 있어야합니다. 균일 한 무작위로 10 개의 물체를 배치하면 5 개 정도의 거리가 될 확률이 낮지 않습니다. 이것은 한 플레이어에게 다른 플레이어보다 유리할 수 있습니다. 지뢰 찾기를 생각해보십시오. 지뢰가 충분하면 낮지 만 한 번의 클릭으로 승리 할 수 ​​있습니다.

내 문제에 대한 매우 순진한 접근 방식은 데이터를 그리드로 나누는 것입니다. 숫자가 충분히 크고 (요소가있는 한) 이런 식으로 여분의 균일 성을 강화할 수 있습니다. 따라서 U [0; 1]에서 12 개의 랜덤 변수를 그리는 대신 U [0; .5]에서 6을, U [0.5; 1]에서 6을, 또는 U [0; 1/3] + 4에서 4를 그릴 수 있습니다 U [1/3; 2/3] + 4에서 U [2/3; 1].

이 균일 성을 균일하게하는 더 좋은 방법이 있습니까? 아마도 임의의 배치 무작위 (단일 무작위를 그릴 때 분명히 전체 범위를 고려해야합니다)에서만 작동합니다. 특히, 나중에 레코드를 다시 섞을 수 있습니다 (따라서 첫 번째 세 번째의 첫 번째 네 개는 아닙니다).

점진적으로 수행하는 것은 어떻습니까? 그래서 첫 번째는 U [0; 1]에 있고, 그다음에 각각 반쪽에서 2 개씩, 3 분의 1에서 각각 4 분의 1에서? 이것이 조사되었고 얼마나 좋습니까? x와 y에 서로 다른 생성기를 사용하여 상관 관계를 갖지 않도록 조심해야 할 수도 있습니다 (첫 번째 xy는 항상 아래쪽 절반에 있고, 두 번째는 왼쪽 절반과 아래쪽 3에, 세 번째는 가운데 3과 3에 있습니다. .. 적어도 임의의 빈 순열도 필요합니다. 장기적으로는 너무 균등할 것입니다.

사이드 노드로서, 일부 분포가 너무 균일하게 분포되어 실제로 균일 하지 않은지 잘 알려진 테스트가 있습니까? 따라서 "진정한 유니폼"과 "누군가가 데이터를 엉망으로 만들고 항목을보다 균등하게 분배하는 것"을 테스트합니다. 올바르게 기억한다면 Hopkins Statistic에서이를 측정 할 수 있지만 테스트에도 사용할 수 있습니까? 또한 다소 역 KS- 검정 : 최대 편차가 특정 예상 임계 값보다 낮 으면 데이터가 너무 고르게 분포되어 있습니까?


7
Halton 시퀀스에 대해 들어 보셨습니까 ? 피셔의 Mendel 완두콩 실험 결과 조사로 시작한 사람들은 "너무 고르게"사람들에게 (평상시) 카이 제곱 통계량을 카이 제곱 분포 의 아래쪽 꼬리에 언급했습니다 .
whuber

이 공식화하는 한 가지 방법은 분배하고자하는 것이다 이되도록 (1) g ( ) 에 주 변화를 1 이상의 X 1 , . . . , x n - 1 , (2) g 는 대칭, 즉 X 1 , 이다. . . , X는 N 교환하고, (3) g ( X 1 , .g(x1,...,xn)g()1x1,...,xn1gX1,...,Xn 경우 큰 X 1 , . . . , x를 N 분산된다. R의 무한 교환 가능한 시퀀스는음의 상관 관계가 없기 때문에(2)와 (3)에는 실제 문제가 있다고 생각합니다. 따라서우리가 더 큰 n 을 사용하면 반발력을 줄일 수 있습니다. 다른 한편으로, 큰 n에 대해 , 우리는 어쨌든 좋은 스프레드를 가져야합니다. g(x1,...,xn)x1,...,xnRnn
guy

Halton 시퀀스는 내가 생각한 접근 방식과 매우 비슷합니다. 상관 관계의 위험을 줄이기 위해 처음 몇 개의 항목을 건너 뛰는 것을 포함합니다. 또한 각 수준에 임의의 순열을 사용하려고 생각했습니다. 관련 포인터를 검색하는 데 도움이되는이 포인터에 감사합니다.
Anony-Mousse

wrt. 다시 Halton 시퀀스. 적어도 초기 시드를 제외하고 비 결정적이어야합니다. 두 가지 방법이 있습니다. 임의 오프셋 + 임의 시작 오프셋 + 단계 크기로 순환 시프트를 수행 할 수 있습니다. 문제는 물론 게임 예제에 남아있는 "보물"도 매번 서로에 대해 동일한 위치에 있지 않아야한다는 것입니다. 또는 제 질문에 포함 된이 하위 구간에서 균일 한 접근 방식을 사용하여 "랜덤 트위스트"를 추가 할 수 있습니다. 말하자면, Halton은 다시 사용하기에는 너무 예측 가능하고 규칙적으로 보입니다.
Anony-Mousse

3
en.wikipedia.org/wiki/Low-discrepancy_sequence 또는 mathworld.wolfram.com/QuasirandomSequence.html . 균일 한 RNG에 대한 몇 가지 일반적인 테스트 (예 : Diehard / Dieharder 배터리 테스트)는 이러한 것들에 민감합니다. 예를 들어, 점 사이에 '작은 거리'가 너무 적습니다.
Glen_b

답변:


60

, 무작위 유니폼보다 더 균일하게 분포 된 일련의 숫자를 생성하는 많은 방법이 있습니다. 실제로이 질문에 전념 하는 전 분야가 있습니다. QMC ( Quasi-Monte Carlo )의 중추입니다 . 아래는 절대 기본 사항에 대한 간단한 둘러보기입니다.

균일 성 측정

여러 가지 방법이 있지만 가장 일반적인 방법은 강력하고 직관적이며 기하학적 인 풍미가 있습니다. 양의 정수 d에 대해 [ 0 , 1 ] d 에서 포인트 x 1 , x 2 , , x n 을 생성하는 데 관심이 있다고 가정 해 봅시다 . 정의 여기서 은 에서 직사각형 입니다.nx1,x2,,xn[0,1]dd

Dn:=supRR|1ni=1n1(xiR)vol(R)|,
R[a1,b1]××[ad,bd][0,1]d0aibi1 및 은 이러한 모든 사각형의 집합입니다. 계수 안의 첫 번째 항은 내측 지점의 "관찰"인 비율 과 두 번째 항은 체적 인 , .RRRvol(R)=i(biai)

수량 은 종종 포인트 세트 의 불일치 또는 극단적 인 불일치 라고합니다 . 직관적으로, 우리 는 점들의 비율이 완벽한 균일 성에서 기대하는 것으로부터 가장 많이 벗어나는 "가장 나쁜"사각형 을 발견합니다 .Dn(xi)R

이것은 실제로 다루기 어렵고 계산하기가 어렵습니다. 대부분의 경우, 사람들이 함께 작업하는 것을 선호 스타 불일치 , 유일한 차이점은 상한값을 취하는 집합 입니다. (원점에서) 고정 된 사각형 의 집합입니다 . 즉, 입니다.

Dn=supRA|1ni=1n1(xiR)vol(R)|.
Aa1=a2==ad=0

기본 : 모든 , . 증거 . 왼손 경계는 이후부터 분명 합니다. 모든 은 합집합, 교차점 및 이상의 고정 사각형 ( )의 보수를 통해 구성 될 수 있기 때문에 오른쪽 경계가 이어집니다 .DnDn2dDnnd
ARRR2dA

따라서 우리는 과 는 하나가 이 커질 때 작 으면 다른 하나도 같다는 의미에서 동등하다는 것을 알 수 있습니다. 다음은 각 불일치에 대한 후보 사각형을 보여주는 (만화) 그림입니다.DnDnn

극도의 별 불일치

"좋은"시퀀스의 예

별표 불일치가 낮은 시퀀스 는 당연히 낮은 불일치 시퀀스 라고 불립니다 .Dn

반 데르 코 ut . 아마도 가장 간단한 예일 것입니다. 들면 , Corput 서열 데르 밴은 정수 팽창시킴으로써 형성되고 소수점 약 "숫자를 반영"이진하고있다. 더 형식적으로, 이러한이 이루어집니다 라디칼 역 기저 함수 , 여기서 와 베이스에있는 숫자 확대 . 이 기능은 다른 많은 시퀀스의 기초를 형성합니다. 예를 들어, 바이너리의 은 이므로d=1ib

ϕb(i)=k=0akbk1,
i=k=0akbkakbi41101001a0=1 , , , , 및 입니다. 따라서 van der Corput 시퀀스의 41 번째 포인트는 입니다.a1=0a2=0a3=1a4=0a5=1x41=ϕ2(41)=0.100101(base 2)=37/64

최하위 비트가 과 사이에서 진동 하기 때문에 홀수 대한 포인트 는 에 있고 에 대한 포인트 는 있습니다.i01xii[1/2,1)xii(0,1/2)

할턴 서열 . 고전적인 불일치 시퀀스 중 가장 많이 사용되는 시퀀스 중 하나는 van der Corput 시퀀스를 여러 차원으로 확장 한 것입니다. 번째 가장 작은 소수 라고 합시다 . 그리고,이 번째 포인트 의 차원 홀턴 순서는 낮은 이러한 기능은 상당히 잘 작동하지만 더 높은 차원에서는 문제가 있습니다 .pjjixid

xi=(ϕp1(i),ϕp2(i),,ϕpd(i)).
d

서열은 시킵니다. 포인트의 구성은 시퀀스 의 길이에 대한 사전 선택에 의존하지 않기 때문에 확장 가능 하기 때문에 좋습니다 .Dn=O(n1(logn)d)n

해머 슬리 시퀀스 . 이것은 Halton 시퀀스의 매우 간단한 수정입니다. 대신 어쩌면 놀랍게도 장점은 더 나은 별 불일치 입니다.

xi=(i/n,ϕp1(i),ϕp2(i),,ϕpd1(i)).
Dn=O(n1(logn)d1)

다음은 2 차원 Halton 및 Hammersley 시퀀스의 예입니다.

할턴과 해머 슬리

잘 치환 된 Halton 서열 . Halton 시퀀스를 생성 할 때 각 대한 숫자 확장 에 특수 순열 세트 ( 의 함수로 고정됨 )를 적용 할 수 있습니다 . 이렇게하면 더 높은 차원에서 언급 된 문제를 어느 정도 해결할 수 있습니다. 각 순열은 과 을 고정 소수점 으로 유지하는 흥미로운 속성이 있습니다.iaki0b1

격자 규칙 . 보자 가 될 정수를. 가라 여기서 의 소수 부분을 나타내고 . 값을 신중하게 선택 하면 균일 성이 좋아집니다. 잘못된 선택은 잘못된 순서로 이어질 수 있습니다. 또한 확장 할 수 없습니다. 다음은 두 가지 예입니다.β1,,βd1

xi=(i/n,{iβ1/n},,{iβd1/n}),
{y}yβ

좋고 나쁜 격자

(t,m,s) 그물 . 베이스 네트 는 의 부피 의 모든 사각형에 포인트 가 포함되도록 포인트 세트입니다. 이것은 강력한 형태의 균일 성입니다. 이 경우 작은 는 친구입니다. Halton, Sobol '및 Faure 시퀀스는 네트의 예입니다. 이것들은 스크램블링을 통해 무작위 화에 능숙합니다. 네트 무작위 스크램블링 (오른쪽 수행) 은 또 다른 네트를 생성합니다. 민트 프로젝트는 시퀀스의 컬렉션을 유지합니다.(t,m,s)bbtm[0,1]sbtt(t,m,s)(t,m,s)(t,m,s)

간단한 무작위 추출 : Cranley-Patterson rotations . 하자 포인트들의 시퀀스 일. 보자 . 그런 다음 점이 에 균일하게 분포됩니다 .xi[0,1]dUU(0,1)x^i={xi+U}[0,1]d

다음은 파란색 점이 원래 점이고 빨간색 점이 선을 연결하여 회전 한 점입니다 (적절한 경우 감싸서 표시).

크 랜리 패터슨

완전히 균일하게 분포 된 시퀀스 . 이것은 때때로 작용하는 더욱 균일 한 통일성 개념입니다. 하자 의 포인트 시퀀스 일 이제 크기의 중첩 블록을 형성하고 순서 얻는 . 그래서, 경우 , 우리가 가지고 다음 등의 경우에 대한 모든 , 이면 는 완전히 균일하게 분포 된다고합니다 . 즉, 시퀀스는 임의 의 포인트 세트를 생성 합니다.(ui)[0,1]d(xi)s=3x1=(u1,u2,u3)x2=(u2,u3,u4) s1Dn(x1,,xn)0(ui)바람직한 속성 이있는 차원입니다 .Dn

예를 들어, 반 데르 코 르트 시퀀스는 이므로 점 는 제곱 및 점 있기 때문에 완전히 균일하게 분포되지 않습니다. 은 있습니다. 따라서 정사각형 에는 , 은 모든 대해 점을 의미합니다 .s=2x2i(0,1/2)×[1/2,1)x2i1[1/2,1)×(0,1/2)(0,1/2)×(0,1/2)s=2Dn1/4n

표준 참조

니더 라이터 (Niederreiter) (1992) 논문과 송곳니와 왕 (1994) 텍스트 추가 탐사를 위해 갈 장소입니다.


4
이 답변은 훌륭합니다. 저는 여러분의 노력에 감사하고 싶습니다. 감사합니다!
Anony-Mousse

1
하나의 작은 후속 질문. Halton 서열은 너무 규칙적이지 않기 때문에 좋아 보인다. 격자 재료는 저에게 매우 규칙적이며, 해머 슬리 시퀀스는 원점을 통과하는 선에 많은 물체가있는 것처럼 보입니다. 진정한 유니폼과 가짜 유니폼의 균형을 조절하는 좋은 방법은 무엇입니까? Halton의 80 % 기여 + 20 % 균일 한 랜덤?
Anony-Mousse

1
+ 10k, 확실히 최저 (87 !!!!) 답변! 아, 나는이 포스트를 매우 좋아한다. 실제로 질문으로 북마크했습니다. 잘 했어, @cardinal.
매크로

@ 매크로 : 좋은 의견 감사합니다! 당신은 매우 친절합니다. 나는이 10K 일이 일시적이라고 생각합니다. 나는 미루지 않는 사람의 투표권이 회복 되 자마자 10K 이하로 떨어질 수 있습니다. 나는 이것이 실제로 일어나지 않았다는 것에 놀랐다. 나는 그들이이 사이트에 거의 3000 표를 던졌다 고 믿는다. 여기에 게시 해 주셔서 감사합니다. 어떻게 든 나는 익명 무스의 후속 질문을 본 적이 없다!
추기경

@ Anony-Mousse : 응답의 끔찍한 지연에 대한 사과. 나는이 의견들을 간과해야했다. 균형을 이루는 것은 목표에 달려 있다고 생각합니다. 이론적으로 말하면 임의의 균일 점을 도입하면 의 최적 속성을 파괴 할 수밖에 없습니다 . 실제적 으로, 시퀀스 의 속성에 따라 지터가 선택된 QMC 포인트의 매우 작은 지터를 사용하는 것이 좋습니다 . 시프트 및 좌표 회전과 같은 모든 점에서 임의의 강체 변환을 도입 할 수도 있습니다. DD
추기경

3

이를 수행하는 한 가지 방법은 균일 한 난수를 생성 한 다음 원하는 방법을 사용하여 "근접성"을 테스트 한 다음 다른 방법과 너무 가까운 임의의 항목을 삭제하고이를 보완하기 위해 다른 임의의 유니폼을 선택하는 것입니다.

그러한 분포가 모든 균일 성 시험을 통과합니까? 나는 확실히 희망하지 않는다! 더 이상 균일하게 분배되지 않으며 이제 다른 분배입니다.

확률의 명백한 측면 중 하나는 기회가 무너진다는 것입니다. 사람들이 생각하는 것보다 무작위 데이터에 더 많은 실행이 있습니다. 나는 Tversky가 이것에 대해 약간의 연구를했다고 생각합니다 (그는 너무 많이 연구하여 기억하기 어렵습니다).


2
이 접근 방식의 (많은) 문제 중 하나는 결과 분포를 특성화하기가 매우 어렵다는 것입니다.
whuber

OP는 작은 샘플 크기에 가장 관심이있는 것 같습니다. 이것은 그가 전체 분포를 신경 쓸 필요가 없다는 것을 암시합니다. 좌표 세트가 있다고 가정하고 다른 좌표를 생성 한 후 다른 모든 좌표를 기준으로 유클리드 거리를 계산합니다. 가장 작은 거리가 임계 값 미만인 경우 숫자를 버리고 새 거리를 생성하십시오. Peter의 솔루션이 제대로 작동한다고 생각합니다.
John

@ whuber 그는 내가 틀렸을지라도 그것에 관심이없는 것 같습니다.
Peter Flom-Monica Monica 복원

2
Peter : 이의 제기를 좀 더 명확하게 설명하겠습니다. Peter : 클러스터링 부족과 같은 원하는 속성을 근사하기 위해 의사 난수 값을 임시 방식으로 제거 및 / 또는 조정 하면 결과 시퀀스가 ​​확실하지 않습니다. 어떤 바람직한 특성. 예를 들어, 분석법을 사용하면 결과 프로세스의 첫 순간이 무엇인지 알려 주실 수 있습니까? (즉, 강도가 균일하다는 것을 확신 할 수 있습니까?) 두 번째 순간은 어떻습니까? 일반적으로 이들은 추론에 효과적으로 시퀀스를 사용하는 데 필요한 최소한의 정보를 구성합니다.
whuber

2
문제의 예에서 그는 게임의지도에 보물을 놓기를 원합니다. 그것은 추론이나 순간이나 그런 종류의 것을 포함하지 않을 것입니다. 나는 내 방법이 많은 목적에 좋지 않다는 것을 인정하지만, 그 방법이 예제와 일치한다고 생각합니다. 물론, 그 예는 실제로 그가 원하는 것이 아닐 수도 있습니다 .... 그는 좀 더 공식적인 것을 원할 것입니다.
Peter Flom-Monica Monica 복원

3

이것을 "하드 코어"포아송 포인트 프로세스라고합니다. 1970 년대 Brian Ripley에 의해 명명되었습니다. 즉, 당신은 그것을 무작위로 만들고 싶지만, 포인트가 너무 가까이 있기를 원하지 않습니다. "하드 코어"는 다른 지점이 침입 할 수없는 버퍼 영역으로 상상할 수 있습니다.

도시에서 일부 자동차의 위치를 ​​기록한다고 가정하지만 자동차의 공칭 중심점 만 기록한다고 가정 해보십시오. 그들이 거리에있는 동안 차체의 "하드 코어"에 의해 점이 보호되기 때문에 두 점 쌍이 서로 닿을 수는 없습니다. 다층 주차장의 잠재적 인 슈퍼 포지셔닝은 무시합니다 :-)

이러한 포인트 프로세스를 생성하는 절차가 있습니다. 한 가지 방법은 포인트를 균일하게 생성 한 다음 너무 가까운 것을 제거하는 것입니다!

이러한 공정의 일부 상세 내용을 예를 들면 참조


2

사전에 배치 생성과 관련하여 많은 수의 의사 난수 변이를 생성 한 다음 Kolmogorov-Smirnov 테스트와 같은 테스트로 테스트합니다. p- 값 이 가장 높은 세트를 선택하려고 합니다 (즉, 이 이상적임). 이 속도는 느리지 만 이 커질수록 아마도 덜 필요할 것입니다. p1N

증분 생성과 관련하여 본질적으로 약간 음의 자기 상관이있는 시리즈를 찾고 있습니다. 시계열에 대한 경험이 매우 제한적이기 때문에 최선의 방법이 무엇인지 잘 모르겠지만 기존 알고리즘이 있다고 생각합니다.

"너무 균등 한"테스트와 관련하여 샘플이 특정 분포 (예 : KS)를 따르는 지 여부에 대한 테스트를 수행하면 가 아닌 표준 접근법. 여기이 다른 방법의 예에 대해 쓴 : 항상 일방적 인 시험을 치 제곱 . p>(1α)


1

나는 이런 식으로 문제를 공식화하고자한다 : 밀도가 가되도록 대한 분포를 원한다 포인트의 반발을 정량화하는 대해 .[0,1]nf(x)e(1kij|xixj|k)1kk<0

이러한 벡터를 생성하는 쉬운 방법 중 하나는 Gibbs 샘플링을 수행하는 것입니다.


이것에 대해 자세히 설명해 주시겠습니까? 조건부 분포 = 한계 분포 = 균일하기 때문에 깁스 샘플링이 여기에 도움이되지 않는 것 같습니다. 또는 이전 표본을 사용하여 표본 분포에서 "구멍"을 생성하라는 제안입니까?
Anony-Mousse

균일 한 랜덤 벡터를 선택한 다음 반복적으로 인덱스 균일하게 선택하고 다시 샘플링 합니다. 리샘플링 전후 에 의 비율 을 계산하고 승산 리샘플링을 거부하십시오 . 이것은 글로벌 거부가 아닌 로컬을 수행하기 때문에 벡터가 매우 길 때 얻은 다른 답변보다 훨씬 빠릅니다. ixirf(x)r
Neil G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.