무작위성이란?


23

저는 컴퓨터 과학 학생이며 현재 시스템 시뮬레이션 및 모델링 과정에 등록되어 있습니다. 예를 들어 IID, Gaussian 등과 같은 다른 분포 곡선에서 난수를 생성하여 주변의 일상적인 시스템을 처리하고 다른 시나리오에서 시뮬레이션합니다. 나는 boids 프로젝트를 연구하고 있는데, 정확히 "무작위"가 실제로 무엇인가에 대한 질문이 나에게 부딪쳤다. 예를 들어, Math.random()Java 의 메소드를 통해 프로그래밍 언어로도 생성하는 모든 난수 는 기본적으로 "알고리즘"에 따라 생성됩니다.

우리가 생성하는 일련의 숫자가 실제로 무작위이며, 우리가 가능한 한 정확하게 특정 모델을 시뮬레이션하는 데 도움이된다는 것을 어떻게 알 수 있습니까?



답변:


18

짧은 대답은 실제 무작위성이 무엇인지 또는 그러한 것이 존재하는지 아무도 모른다는 것입니다. 이산 물체의 무작위성을 정량화하거나 측정하려면 일반적으로 Kolmogorov의 복잡성 으로 전환하십시오 . Kolmogorov의 복잡성 이전에는, 우리는 그것을 생성 한 과정을 고려하지 않고 일련의 숫자의 무작위성을 정량화 할 방법이 없었습니다.

다음은 실제로 사람들을 다시 괴롭힌 직관적 인 예입니다. 동전 던지기 순서를 고려하십시오. 1 회 던지기의 결과는 머리 ( ) 또는 꼬리 ( T )입니다. 동전을 10 번 던지는 두 가지 실험을 해보자. 첫 번째 실험 E 1H , H , H , T , T , H , T , H를 제공 합니다. 결과를 본 후, 당신은 E 1 의 동전에 문제가 있다고 주장 하거나 적어도 당신이 얻은 이상한 것이 무작위가 아니라는 유혹에 빠질 수 있습니다 . 그러나 HH를 모두 가정하면H이자형1 합니다. 두 번째 실험 E 2 T , T , H , T , H ,H,H,H,H,H,H,H,H,H,HE2T,T,H,T,H,T,T,H,T,HE1HT 어느 얻는 확률 (경화 공정이다) 가능성 같다 또는 E (2) 와 동일하다 ( 1 / 2 ) 10 . 사실, 획득 어떤 특정 순서 상관 등의 가능성과 같다! 아직도, E 2 느낌E1이자형2(1/2)10이자형2 무작위이며 은 그렇지 않습니다.이자형1

일반적으로 Kolmogorov의 복잡성은 계산할 수 없기 때문에 어떤 종류의 "완전히 랜덤 한"프로세스가 발생했는지에 관계없이 일련의 숫자가 얼마나 랜덤한지 계산할 수 없습니다.


무한 시퀀스의 경우 정규성과 같이 임의성을 정의하는 훨씬 더 많은 도구가 있습니다.
Denis

1
@dkuper Kolmogorov 복잡도 정의에 따라 초기 세그먼트의 무한 시퀀스는 모두 임의적이지만 정상적인 것은 충분하지 않은 것으로 간주하기에는 충분하지 않습니다. 예를 들어, 초기 세그먼트가 모두 0보다 1이 큰 정규 숫자가 있습니다.
Quinn Culver

@Quinn Culver 예, 동의는 무한 시퀀스를 위해 우리가 가지고있는 추가 도구의 예일뿐입니다. Kolmogorov의 복잡성과 다른 것들이 여전히 유용합니다.
Denis

8

Java (또는 유사한 언어)의 경우 임의의 숫자를 만드는 데 사용되는 알고리즘 을 알고 있습니다. 그것은 하나의 씨앗으로 시작하면 우리가 알고있는 경우, 숫자 즉, 전혀 무작위없는 시퀀스에서 0 , ... , n은 , 우리가 알고 I + 1 : 또는 조건부 확률로 진술을 K를 , 리터를 , i : P ( a i + 1 = k a i = l ) { 0 ,aia0,,anai+1

k,l,i:P(ai+1=kai=l){0,1}

그럼에도 불구하고 이러한 계열은 난수 가 충족하는 속성 (예 : WP : Autocorrelation 참조 )을 충족 할 수 있으며 이러한 속성은 종종 "실제"(예 : 실제 프로세스에 의해 생성 된) 난수를 사용하려는 작업을 수행하기에 충분하지만 ' 노력하지 마십시오.


3

주어진 순서가 무작위인지 아닌지를 확실히 알 수는 없습니다. 그러나 시퀀스의 특성 (또는 매개 변수)을보고 관심 분포가 주어지면 이러한 시퀀스의 확률을 계산할 수 있습니다.

랜덤 생성기를 사용하여 무한정 긴 시퀀스를 생성 할 수있는 경우 랜덤 분포와 동일한 매개 변수를 가져야합니다. 예를 들어 표준 가우스 분포 ( μ = 0)를 사용하는 경우 , 를 사용하는 경우 시퀀스의 평균이 0에 도달하고 표준 편차가 1에 도달해야합니다. 따라서 발전기를 확인하는 예비 방법 중 하나는 실제로 긴 시퀀스를 생성하고 원하는 무작위 분포에 근접하는지 확인하는 것입니다.(μ=0,σ=1)1

추가 검증을 위해 관심있는 분배 모멘트 (예 : 왜도)를 추가 할 수 있습니다. IID 번호의 경우, 기계 학습 알고리즘을 훈련시켜 다가오는 시퀀스의 요소를 예측 한 다음 히스토리가 성능을 향상 시킨다는 귀무 가설을 테스트 할 수 있습니다. 그러나, 이들 방법 중 어느 것도 서열이 무작위로 랜덤하다는 것을 입증 할 수 없으며, 서열이 무작위가 아닌 경우 (어떤 정도의 확실성)를 인식 할 수있다.


3

컴퓨팅 답변의 현대 이론은 "임의의 소스는 선호하는 알고리즘 클래스에 무작위로 보이는 소스"입니다. 이것은 실용적인 관점입니다 : 임의의 소스가 관심있는 모든 알고리즘에 대한 진정한 임의의 것처럼 보인다면, 다른 것은 중요하지 않습니다. 마치 무작위로 동전을 던지는 것처럼 알고리즘을 분석 할 수 있으며 분석 결과가 정답입니다.

좀 더 정확하게 말하면 클래스 모든 알고리즘에 관심이 있다고 가정 해 봅시다 .에이에이

  • 항상 정지하는 모든 튜링 기계
  • 모든 다항식 회로 제품군
  • 모든 다항식 시간 튜링 기계
  • 모든 통나무 공간 튜링 기계

에이(엑스)엑스{0,1}ϵ에이에이에이

|홍보[에이(엑스)=1]홍보[에이()=1]|ϵ,
{0,1}

이 아이디어는 현대 의사 유사성에 대한 공식적인 개념 뒤에 있습니다.


2

여기 센트가 두 개 더 있습니다.

무작위 알고리즘에 대해 생각하는 한 가지 방법은 입력을 받고 해당 입력에 대해 신비한 작업을 수행하며 일부 "예측할 수없는"출력을 생성하는 상자를 그리는 것입니다.

그러나 대신 두 가지 입력, 즉 "진정한"입력과 같은 임의의 "무작위"입력을 취하는 결정적 알고리즘으로 생각하면 도움이 될 수 있습니다. Math.Random() .

[0,1]로그

[0,1]로그

Jonathan과 frafl이 언급했듯이 임의의 소스가 "무작위로"동작하는지 확인하는 방법이 있습니다. 그러나 그들이 할 모든 것은이 임의의 출처에서 오는 미래 정보에 대한 당신의 믿음에 영향을 미칩니다. 이전 비트에 관계없이 각 비트가 0 또는 1이 될 가능성이 높다고 생각하는 경우, 지식과 신념을 최대한 발휘할 수 있도록 해당 소스는 균일하고 독립적으로 무작위이므로 귀하의 지식과 신념에 따라야합니다. 빠르게 실행되거나 정확합니다. 어쨌든 그것은 나의 철학적 취향입니다.


-2

우리는 진정한 난수를 생성 할 수 없습니다. 지정된 방정식과 특정 시드 값을 사용하여 의사 난수를 생성하는 방법에는 여러 가지가 있습니다. 따라서 임의의 숫자 시퀀스는 시드 값에 따라 다릅니다. 시드 값을 알면 시퀀스가 ​​무엇인지 예측할 수 있습니다. 이 외에도 난수를 생성하는 다른 방법이 있습니다. 사람들은 현재 디스크 헤드 이동 시간 및 컴퓨터에 통합 될 수있는 다른 물리적 방법을 사용하는 것과 같은 실제 난수를 생성하기 위해 몇 가지 방법을 사용하고 있습니다 .



-3

당신이 말한 주어진 방법에 의해 Java Randomize의
Math.random () ; 랜덤 (n); 델파이에서

자신의 구조와 논리를 구현하여 난수를 생성
할 수 있습니다. 여기서 이러한 "알고리즘"은 지정된 사양으로 더 나은 난수 결과를 얻을 수 있습니다.
그 논리를 기반으로합니다.

감사.


2
이것은 어떻게 "시퀀스가 무작위임을 아는가"라는 질문에 어떻게 대답합니까?
Juho

내가 이미 말했듯이 "무작위"는 속임수로 볼 수 있지만 무작위 효과에는 영향을 미치지 않습니다. 그런 다음 자랑스럽고 논리를 구축하십시오. 단순한.
닉네임

-4

다른 대답은 좋습니다. 여기에 매우 중요하고 의도하지 않은 깊은 질문에 대한 다른 견해가 있습니다. 컴퓨터 과학자들은 수십 년 동안 무작위성을 연구 해 왔으며 계속 연구 할 것으로 보입니다. 그것은 전 분야에 걸쳐 많은 깊은 연결과 가장 개방적인 질문이 남아 있습니다. 여기 몇 가지 조언이 있습니다.

  • "true / real randomness"는 제너 다이오드, 양자 역학 등과 같은 저수준 물리적 프로세스 및 "노이즈"에서 발생하며 하드웨어 기반 RNG 에서 활용할 수 있습니다.

  • 컴퓨터 영역에서 생성 된 다른 숫자는 "의사 난수" 로 알려져 있으며 "모두 무작위" 와 일치 할 수 없습니다. 이들은 소위 PRNG입니다

  • "난수 생성기의 암호화 경도"라는 의미는 의미 상 "품질"또는 "보안"을 측정하는데, 예를 들어 암호로 안전한 PRNG를 참조하십시오 . 기본적으로 "약한"생성기는 "하드"생성기만큼 많은 계산 복잡성을 갖지 않으며 "약한"생성기는 깨지기 쉽습니다.

  • 영형()영형(2)=?NP 증거는 특정 "복잡성"을 가져야합니다. 그렇지 않으면 동일한 분석 기술을 사용하여 PRNG를 차단할 수 있으며, 그 당시에 알려진 (또는 아마도 그 이후 까지도) 대부분 또는 모든 복잡성 분류 분리 / 기술 은 복잡성이 충분하지 않습니다.

  • TCS의 중요한 연구 주제는 무작위 화되고 무작위 화되지 않은 알고리즘 입니다. 이 아이디어는 대략 "진정한 무작위성"을 PRNG로 대체하여 알고리즘이 얼마나 많이 변경되는지를 연구하고 주제에 대한 다양한 깊은 이론이 있습니다. 다음은이 분야에 대한 연구의 풍미를 제공하는 고급 cstheory.se 질문입니다 . 결정론이 어려운 효율적이고 간단한 무작위 알고리즘

  • TCS의 또 다른 핵심 관련 주제는 정보 엔트로피 ( 원래 물리학 에서 소개 된) 인데, "정보 장애"와 밀접하게 관련된 개념을 연구하고 (T) CS의 다른 중요한 개념과 마찬가지로 교차 절단하는 핵심 아이디어 중 하나 인 것 같습니다. 적용 분석과 이론 분석의 경계, 심지어 일부 공식은 동일 합니다.

  • 다시 활발한 연구의 상태를 증명하면서 cstheory.se에는이 질문과 관련된 다른 높은 질문이 있습니다. 여기 거의 하나의 클로저가 있습니다. 진정한 난수 생성기입니다.


그리고 컴퓨터 과학자들만이 물론 "무작위성"에 관심이있는 것은 아닙니다. 종교적, 철학적 관점에서도 고려 될 수있는 오래된 질문 일 것입니다.
Juho

물리학에서도 그것은 QMBohr-Einstein 토론 인 Bells thm 의 발명에서 핵심 개념 이며, 여전히 “숨겨진 가변 이론”을 다시 활발한 연구 영역에 동기를 부여했다 . 당신이 말했듯이, 아무도 그것이 무엇인지 모르지만, 여전히 많은 사람들이 우리가 말하는 것처럼 더 확실한 답을 찾기 위해 노력하고 있습니다.
vzn

더 NP 각도 대 P에 난수의 관련성, 상기 satisfiability 및 도당 "전이 포인트"예에 도시 본 논문에서와 같이 임의의 그래프에 대한 K-도당의 모노톤 복잡성 Rossman 의해
vzn

난수 생성기를 해제하면 RNG 공격 , Wikipedia
vzn

에 의해 CS의 임의성에 대한 개요 wigderson의 임의성 및 의사 난
vzn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.