원유 난수 생성기로 Pi를 사용할 수 있습니까?


30

나는 최근 질문을 math.SE에서 보았습니다. 생각이났다 Pi를 원유 난수 생성기로 사용할 수 있습니까? 나는 결과가 잘 알려져 있음을 의미하지만 (파이는 얼마나 오래 계산 되었습니까?)하지만 한 번에 1 자리를 취할 때 Pi는 매우 무작위 인 것처럼 보입니다.

이것은 전혀 의미가 있습니까?


이 난수는 어디에 사용됩니까?
NullUserException

2
이론적으로는 가능하지만 현재 방법보다 최적이 아닐 수 있습니다. 그냥 본능에 있지만 무작위 풀은 오버 헤드가 적고 이런 식으로 더 커 보입니다.
Rig

@NullUserException 확실하지 않습니다 ... 나는 그들이 전혀 사용할 수 있는지 궁금합니다. 나는 이것이 암호화를위한 것이 아니라고 가정한다. '
Earlz

3
@FrustratedWithFormsDesigner-ent 패키지의 일부. 난수를 사용하여 사각형 안에 새겨진 원의 면적을 계산하고 그로부터 파이를 계산할 수 있습니다. pi의 비트를 난수로 사용하면 해당 데이터를 사용하여 pi를 계산할 수있는 우아함이 있습니다.

1
@FrustratedWithFormsDesigner ent 는 바이트 묶음의 의사 무작위성을 분석하기위한 코드 모음입니다. 그중 하나의 테스트는 pi를 계산하고 임의의 계산을 실제 값과 비교하여 얼마나 무작위인지 확인하는 Monte Carlo입니다.

답변:


50

pi의 이진 값을 얻기 위해 http://www.befria.nu/elias/pi/binpi.html 을 파고 (십진수를 사용하지 않고 바이트로 변환하는 것이 더 쉽도록) ent를 통해 실행 바이트의 무작위 분포를 분석하기 위해 다음을 얻습니다.

엔트로피 = 바이트 당 7.954093 비트.

최적 압축은이 4096 바이트 파일의 크기를 0 % 줄입니다.

4096 개의 표본에 대한 카이 제곱 분포는 253.00이며 임의로이 값의 52.36 %를 초과합니다.

데이터 바이트의 산술 평균값은 126.6736입니다 (127.5 = 임의).

Pi의 Monte Carlo 값은 3.120234604입니다 (오류 0.68 %).

직렬 상관 계수는 0.028195입니다 (총 상관 관계 = 0.0).

따라서 임의의 데이터에 pi를 사용하면 상당히 임의의 데이터를 얻을 수 있습니다. 잘 알려진 임의의 데이터임을 알 수 있습니다.


위의 의견에서 ...

당신이하는 일에 따라 임의의 소수의 제곱근을 임의의 숫자 생성기로 사용할 수 있다고 생각합니다. 이들은 최소한 균등하게 분배 된 숫자를 가져야합니다. – Paxinum

그래서 나는 2의 제곱근을 이진수로 계산하여 같은 문제를 제거했습니다. Wolfram의 Iteration을 사용 하여 간단한 펄 스크립트를 작성했습니다.

#!/usr/bin/perl
use strict;
use Math::BigInt;

my $u = Math::BigInt->new("2");
my $v = Math::BigInt->new("0");
my $i = 0;

while(1) {
    my $unew;
    my $vnew;

    if($u->bcmp($v) != 1) { # $u <= $v
        $unew = $u->bmul(4);
        $vnew = $v->bmul(2);
    } else {
        $unew = ($u->bsub($v)->bsub(1))->bmul(4);
        $vnew = ($v->badd(2))->bmul(2);
    }   

    $v = $vnew;
    $u = $unew;

    #print $i,"  ",$v,"\n";
    if($i++ > 10000) { last; }
}

open (BITS,"> bits.txt");
print BITS $v->as_bin();
close(BITS);

처음 10 개 일치하는 A095804에 대해 이것을 실행 하면 시퀀스가 ​​있다고 확신했습니다. 이진수가 첫 번째 숫자 다음에 배치 된 이진수로 쓰여질 때 값 v n 은 제곱근 2의 근사값을 나타냅니다.

이 이진 데이터에 대해 ent를 사용하면 다음이 생성됩니다.

Entropy = 7.840501 bits per byte.

Optimum compression would reduce the size
of this 1251 byte file by 1 percent.

Chi square distribution for 1251 samples is 277.84, and randomly
would exceed this value 15.58 percent of the times.

Arithmetic mean value of data bytes is 130.0616 (127.5 = random).
Monte Carlo value for Pi is 3.153846154 (error 0.39 percent).
Serial correlation coefficient is -0.045767 (totally uncorrelated = 0.0).

내가 찾은 대답의 유형입니다. 이 모든 종류의 물건을 계산하는 방법을 모릅니다
Earlz

숫자 분포가 상당히 임의적 임에도 불구 하고 일부 를 무작위로 선택하는 방법을 찾을 필요가 없습니까?
Blumer

1
@Blumer no. 무작위성은 일련의 숫자로 측정됩니다. pi 자릿수 순서는 임의적이라고합니다. en.wikipedia.org/wiki/Statistical_randomness
Simon Bergot

11
확실히 맞아. 그리고 잘 알려진 임의의 데이터이므로, 암호화 목적으로이 데이터를 감히 사용하지 마십시오.
팔콘

3
"잘 알려진 랜덤 데이터"에 +1. 누군가 추측 할 수없는 임의의 데이터가 필요한 경우 pi는 당신을위한 것이 아니며 어떤 이유로 든 임의의 숫자가 필요하다면 잘 작동합니다.
jmoreno

5

음, 난수 생성기의 다른 속성 중에서도 아마도 일반 숫자가 되기를 원할 것 입니다. 그리고 당신의 질문에 영감을 준 math.SE 질문에 대한 몇 가지 대답은 현재 pi가 정상적인 것으로 여겨지지만 입증되지 않았다는 것을 지적합니다.


2

이러한 생성기는 의사 번호 생성기, 즉 동일한 시드가 주어지면 결과는 항상 동일합니다. 대부분의 프레임 워크에서 표준 난수 생성기를 사용할 때 의사 난수와 동일한 문제가 있습니다.

자릿수 분포는 표준 난수 생성기 ¹와 매우 유사한 것으로 보이므로 π의 자릿수는 일반적인 난수 생성 시나리오에 사용할 수 있습니다.

문제는 알고리즘이 일반적인 난수 생성기와 비교할 때 아마도 매우 느릴 것이므로 실제로는 유용하지 않습니다.


¹ 나는 그것이 사실이라고 믿지만 증거가 없습니다. 많은 수의 숫자를 기준으로 비교하는 것이 흥미롭고 복잡하지 않습니다.


5
@NullUserException : 아니요, 일부 난수 생성기는 엔트로피 소스를 사용합니다. 이는 특수 하드웨어 ( random.org가 취한 접근 방식 )를 통해 또는 기존 엔트로피 소스 (기존 하드웨어 센서 내에서 측정 가능한 변동, 특정 유형의 사용자 상호 작용, 특정 유형의 성능 테스트의 미세한 변동 등)를 사용하여 수행 할 수 있습니다. ).
Brian

1
@NullUserException : 암호화로 안전한 PRNG가 있으며 여전히 의사 난수입니다. 그런 다음 실제 세계의 입력을 기반으로하는 실제 RNG가 있습니다 : 방사성 붕괴, 소음 등
Arseni Mourzenko

2
@MainMa 그러나 그럼에도 불구하고, 사용자 입력으로부터 유도 된 방사성 붕괴, 대기 소음의 무작위성 등은 논쟁의 여지가 있습니다. 패턴을 인식하지 못한다고해서 패턴이 존재하지 않는 것은 아닙니다.
NullUserException

1
@NullUserException : 작년 Colbeck / Renner는 "양자 이론의 확장이 예측력을 향상시킬 수는 없다"는 것을 증명하는 논문을 발표했습니다. 이것이 유지된다고 가정하면, 단순히 예측하기가 아니라 실제로 예측할 수없는 엔트로피 소스가있을 수 있습니다.
Brian

1
@MainMa-당신은 여전히 ​​무작위성에 대한 수학적 테스트를 수행합니다. 기본 물리학이 임의적이지만 (우리가 아는 한,) 측정이 의미하는 것은 아닙니다. 모든 유형의 검출기는 현실 세계에서 많은 '흥미로운'행동을합니다
Martin Beckett

2

파이 (또는 임의의 다른 시퀀스에 대한)의 자릿수 랜덤 성은 소위 '배터리 테스트'에 의해 테스트 될 수있다. 인기있는 배터리 테스트 중 하나는 George Marsaglia의 Diehard Battery Test 입니다. 또한 NIST 특별 출판물 800-22 에는 이러한 여러 테스트와 이러한 테스트를 백만 비트 이상에 대해 -lo 및 behold -pi를 포함한 여러 물리적 상수에 적용한 결과가 설명되어 있습니다. pi의 결과는 보고서의 부록 B에 나와 있으며 다음과 같습니다.

Statistical Test                            P-value
Frequency                                   0.578211
Block Frequency (m = 128)                   0.380615
Cusum-Forward                               0.628308
Cusum-Reverse                               0.663369
Runs                                        0.419268
Long Runs of Ones                           0.024390
Rank                                        0.083553
Spectral DFT                                0.010186
Non-overlapping Templates (m = 9, B = 000000001)          0.165757
Overlapping Templates (m = 9)               0.296897
Universal                                   0.669012
Approximate Entropy (m = 10)                0.361595
Random Excursions (x = +1)                  0.844143
Random Excursions Variant (x = -1)          0.760966
Linear Complexity (M = 500)                 0.255475
Serial (m = 16, 2m∇Ψ )                      0.143005

파이는 랜덤 시퀀스 생성기인가요? 위의 결과를 보거나 의미가 무엇인지 모를 경우 왼쪽 열 변수의 의미를 검색하고 필요에 맞는지 확인하십시오.


1
Diehard에 대한 읽어보기에 따르면 약 10-12MB의 이진 데이터가 필요하다고 말합니다 (내가 찾을 수있는 최선은 32 킬로바이트입니다). ascii 데이터에 대해 실행 한 경우 테스트는 응용 프로그램이 기대하는 것과 상당히 다른 방법입니다.

내 대답은 OP 질문과 Math.SE의 원래 질문에 대한 것입니다. 아스키와 이진 데이터 또는 샘플 길이에 대해서는 언급하지 않았습니다. 충분히 큰 샘플 세트가 없으면 시퀀스의 통계적 무작위성을 어떻게 확인할 수 있습니까?
sm535
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.