본 인용문에서 폰 노이만의 무작위성은 더 이상 적용되지 않습니까?


25

일부 챕터는 다음과 같이 말했습니다.

결정 론적 수단으로 난수를 생성하려고 시도하는 사람은 물론 죄의 상태에 살고 있습니다.

그것은 항상 컴퓨터로 진정한 난수를 생성 할 수 없다는 것을 의미하기 위해 취해졌습니다. 그리고 그는 컴퓨터가 단일 Intel 8080 마이크로 프로세서 (~ 6000 밸브)와 동등한 크기 일 때 말했다. 컴퓨터가 더 복잡 해졌고 폰 본 노이만의 진술이 더 이상 사실이 아닐 수도 있다고 생각합니다. 구현 된 소프트웨어 전용 알고리즘은 불가능합니다. 물리적 하드웨어에서 실행됩니다. 진정한 난수 생성기와 엔트로피 소스도 하드웨어로 만들어집니다.

이 Java 조각은 루프에 넣었습니다.

      file.writeByte((byte) (System.nanoTime() & 0xff));

이미지로 표현한 데이터 파일을 만들 수 있습니다.

나노 이미지

구조를 볼 수 있지만 임의성이 많이 있습니다. 중요한 것은이 PNG 파일의 크기는 232KB이지만 그레이 스케일 픽셀은 250,000 개입니다. PNG 압축 수준이 최대였습니다. 압축률은 7 %에 불과합니다. 상당히 압축 불가능합니다. 흥미로운 점은 파일이 고유하다는 것입니다. 이 파일의 모든 생성은 약간 다른 패턴이며 유사한 ~ 7 % 압축률을 갖습니다. 나는 이것이 나의 주장에 매우 중요하므로 이것을 강조한다. ~ 7 비트 / 바이트 엔트로피입니다. 물론 더 강력한 압축 알고리즘을 사용하면 줄어 듭니다. 그러나 0 비트 / 바이트 근처로 줄이지 마십시오. 위의 이미지를 취하고 컬러 맵을 임의의 것으로 대체하여 더 나은 인상을 줄 수 있습니다.

무작위 나노 이미지

구조는 대부분 비슷하지만 약간 다른 값의 시퀀스이므로 사라집니다. 멀티 테이 팅 운영 체제에서 Java 프로그램을 실행하여 만든 진정한 엔트로피 소스입니까? 균일하게 분포 된 난수 생성기는 아니지만 엔트로피 소스는? PC와 같은 물리적 하드웨어에서 실행되는 소프트웨어로 구축 된 엔트로피 소스.

보충

모든 이미지가 모든 공통의 고정 패턴없이 새로운 엔트로피를 생성 함을 확인하기 위해 10 개의 연속 이미지가 생성되었습니다. 그런 다음 컴파일 할 수있는 가장 강력한 아카이버 (paq8px)로 연결 및 압축되었습니다. 이 프로세스는 변경 / 엔트로피 만 남기고 자동 상관 관계를 포함하여 모든 공통 데이터를 제거합니다.

연결된 파일은 ~ 66 %로 압축되어 ~ 5.3 비트 / 바이트 또는 10.5Mbits / 이미지의 엔트로피 속도로 이어집니다. 엔트로피의 놀라운 금액

보충 2

압축 테스트 방법론에 의한 나의 엔트로피에 결함이 있으며, 상한 추정치가 느슨하다는 부정적인 의견이 있습니다. 이제 NIST의 공식 암호화 엔트로피 평가 테스트 인 SP800-90B_EntropyAssessment를 통해 연결된 파일을 실행했습니다 . 이것은 비 IID 엔트로피 측정에서 얻는 것만 큼 좋습니다. 이것은 보고서입니다 (이 질문은 오래 걸리지 만 문제는 복잡합니다) :-

Running non-IID tests...

Entropic statistic estimates:
Most Common Value Estimate = 7.88411
Collision Test Estimate = 6.44961
Markov Test Estimate = 5.61735
Compression Test Estimate = 6.65691
t-Tuple Test Estimate = 7.40114
Longest Reapeated Substring Test Estimate = 8.00305

Predictor estimates:
Multi Most Common in Window (MultiMCW) Test: 100% complete
    Correct: 3816
    P_avg (global): 0.00397508
    P_run (local): 0.00216675
Multi Most Common in Window (Multi MCW) Test = 7.9748
Lag 

Test: 100% complete
    Correct: 3974
    P_avg (global): 0.00413607
    P_run (local): 0.00216675
Lag Prediction Test = 7.91752
MultiMMC Test: 100% complete
    Correct: 3913
    P_avg (global): 0.00407383
    P_run (local): 0.00216675
Multi Markov Model with Counting (MultiMMC) Prediction Test = 7.9394
LZ78Y Test: 99% complete
    Correct: 3866
    P_avg (global): 0.00402593
    P_run (local): 0.00216675
LZ78Y Prediction Test = 7.95646
Min Entropy: 5.61735

결과적으로 NIST는 5.6 비트 / 바이트의 엔트로피를 생성했다고 생각합니다. 내 DIY 압축 추정은 이것을 5.3 비트 / 바이트로, 조금 더 보수적입니다.

-> 증거는 방금 소프트웨어를 실행하는 컴퓨터가 실제 엔트로피를 생성 할 수 있다는 개념을 뒷받침하는 것 같습니다. 그리고 그 폰 노이만은 틀렸을 것입니다.


본인의 주장을 뒷받침 할 수있는 다음 참조 자료를 제공합니다.

프로그램 실행 속도에 비결정론의 확률 론적 모델이 있습니까?

확률 적 하드 실시간 시스템의 WCET 분석

비 결정적 카오스 패턴을 생성 할 수있는 소프트웨어 알고리즘이 있습니까? 혼돈 효과의 관련성.

양자 엔트로피 불확실성 원리 와 평행

nanoTime ()의 혼란스러운 행동에 관한 Aleksey Shipilёv의 블로그 항목 . 그의 산점도는 저와 비슷하지 않습니다.


47
나는 당신이 수학 / 확률 론적 무작위성으로 "나는 패턴을 볼 수 없다"/ 매일의 임의성을 착각하고 있다고 생각한다.
Raphael

3
@Raphael 나는하지 않습니다. 수학적 압축 알고리즘이 수행합니다. 모든 소프트웨어가 항상 결정적이라면 실시간 운영 체제의 요점은 무엇입니까? 비트에 대한 결정론에 대해 묻고 있습니다.
Paul Uszak

16
"컴퓨터에서"그리고 "결정적 수단으로"혼동하고 있습니다.
user253751

24
여기서 근본적인 문제는 "이 패턴이 어떻게 생성되는지 이해가 안됩니다"에서 시작하여 "이 패턴이 어떻게 생성되는지 이해하지 못한다"는 결론입니다. 이것은 옳지 않으며 SE 프로파일이 주어지면 암호화에 익숙하지 않다는 것을 확실히 알고 있습니다. 침입 할 수없는 시스템을 쉽게 구축 할 수는 있지만 다른 사람도 침입 할 수없는 시스템을 고안하는 것이 가장 큰 과제입니다.
Gilles 'SO- 악의를 멈춰라'

4
"결정 론적"에 대한 대부분의 정의는 호출하는 알고리즘을 제외 할 것이라고 생각합니다 System.nanoTime().
bmm6o

답변:


75

패턴을 볼 수 없다고해서 패턴이 존재하지 않는 것은 아닙니다. 압축 알고리즘이 패턴을 찾을 수 없다고해서 패턴이 없음을 의미하지는 않습니다. 압축 알고리즘은 소스의 실제 엔트로피를 마 법적으로 측정 할 수있는 은색 총알이 아닙니다. 그들이 당신에게주는 것은 엔트로피의 양의 상한 입니다. (NIST 테스트도 마찬가지로 상한선 만 제공합니다.) 카오스는 무작위성이 아닙니다.

이 방법으로 얻은 임의성에 대한 신뢰를 얻으려면 더 자세한 분석과 검사가 필요합니다.

있습니다 우리는 아마 클럭 지터와 이용하여 난수의 일부 금액을 얻을 수 있다고 생각하는 이유는 이 하드웨어 클럭 사이의 편차는 있지만, 조심해야 그래서, 섬세하고 까다로운. 나는 당신 자신의 것을 구현하는 것을 권장하지 않을 것입니다. 대신 고품질 엔트로피 소스를 사용하는 것이 좋습니다 (보통 대부분의 최신 운영 체제에서 구현 됨). 자세한 내용은 Wikipedia , haveged/crypto//q/48302/351 (이미 알고 있음)을 참조하십시오.

마지막으로 오프너에 대한 의견 :

"결정 론적 수단으로 난수를 생성하려는 사람은 물론 죄의 상태에 살고있는 사람입니다."

그것은 항상 컴퓨터로 진정한 난수를 생성 할 수 없다는 것을 의미하기 위해 취해졌습니다.

아니요, 일반적으로 사용되는 방식이 아니며 말하는 내용이 아닙니다. 결정적 수단으로 진정한 난수를 생성 할 수 없다고 말합니다 . 컴퓨터에서 수행 할 수 있는지 여부는 컴퓨터가 결정적인지 여부에 따라 다릅니다. 컴퓨터가 결정 론적이거나 프로그램이 결정 론적 조작만을 사용하는 경우에는 할 수 없습니다. 그러나 많은 컴퓨터에는 비 결정적 요소가 포함되어 있으며 프로그램에서 해당 요소를 사용하는 경우 난수 생성에 사용할 수 있는지 여부를 결정하기 전에보다 자세한 분석이 필요합니다. 귀하의 경우 nanoTime()비 결정적입니다.


6
압축 알고리즘 포인트를 확장하기 위해 PNG는 대부분의 압축 알고리즘과 마찬가지로 데이터에서 패턴을 찾습니다. 데이터 의 변화 에서 패턴을 찾는 알고리즘 은 예제 이미지를 아주 잘 압축 할 수 있습니다.
Mark

1
@Mark-실제로 PNG 변경 패턴을 분석합니다 (실제 픽셀 값과 이미지에서 이미 본 변경 유형을 기반으로하는 여러 예측 휴리스틱 중 하나의 출력 차이에 적용된 수축 압축 사용) 그러나 90 년대 동안 임베디드 디바이스에서 효율적으로 실행될 수 있도록 설계 되었기 때문에 수행 된 분석은 매우 단순합니다. 더 흥미로운 질문은 손실 압축 알고리즘이 얼마나 정확한지에 대한 것입니다. 예를 들어 JPEG의 RMS 오류 또는 이미지에 적용되는 일종의 프랙탈 압축은 무엇입니까?
Jules

3
@Jules : 중요한 것은 PNG가 단순한 것이 아니라 많은 그림에 나타날 수있는 패턴을 압축하도록 설계된 것입니다. 예를 들어 123x234 픽셀과 같은 일반적인 사진을 찍고 픽셀을 동일한 순서로 유지하면서 234x123으로 변경하려면 새 사진의 첫 번째 행에 이전 행의 맨 위 행에서 123 개의 픽셀과 두 번째 행, 새 그림의 다음 행에는 원래 두 번째 행의 마지막 12 픽셀, 원래 세 번째 행 모두 및 네 번째 99의 99 등이 포함됩니다. PNG는 다음과 같습니다.
supercat

1
... 두 번째 사진이 정확히 같은 픽셀을 정확하게 동일한 순서로 포함한다는 사실에도 불구하고 결과 그림을 원본뿐만 아니라 거의 압축하지 않을 것입니다. 먼저.
supercat

100

엔트로피 / 임의의 일부 하드웨어 소스를 사용하는 경우 " 결정적 수단으로 임의성을 생성하려고 시도하지 않습니다 "(내 강조). 엔트로피 / 임의의 하드웨어 소스를 사용하지 않는 경우보다 강력한 컴퓨터는 초당 더 많은 죄를 저지를 수 있음을 의미합니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
DW

20

나는 결정 론적 알고리즘이 고정 된 양의 엔트로피를 가지고 있다는 것을 의미하는 인용문을 항상 이해했으며, 출력이 "무작위"로 보일 수는 있지만 입력이 제공하는 것보다 더 많은 엔트로피를 포함 할 수는 없다. 이 관점에서 우리는 알고리즘이 엔트로피에서 밀수되는 것을 알 수 있습니다 System.nanoTime(). "결정 론적"알고리즘에 대한 대부분의 정의는이 함수를 호출 할 수 없습니다.

인용구는 피투성이이지만 본질적으로 팽팽한 설명입니다. 반증 할 것이 없으며 더 이상 사실로 만들 수없는 하드웨어의 진화도 없습니다. 그것은 하드웨어에 관한 것이 아니라 결정 론적 알고리즘의 정의에 관한 것입니다. 그는 결정론과 무작위성이 양립 할 수 없다는 것을 단순히 관찰하고있다. 결정 론적 알고리즘의 경우 전체 동작은 시작 조건에 의해 예측됩니다. 예외를 발견했다고 생각되면 결정적이라는 것이 무엇을 의미하는지 오해하는 것입니다.

복잡한 일련의 캐시가있는 공유 컴퓨터에서 실행되고 다양한 네트워크 및 하드웨어 입력을받는 프로세스는 단순하고 격리 된 전용 하드웨어에서 실행되는 프로세스보다 훨씬 많은 엔트로피에 액세스 할 수 있습니다. 그러나 해당 프로세스가 해당 엔트로피에 액세스하는 경우 더 이상 결정적이지 않으므로 견적이 적용되지 않습니다.


반영시 (Java 유형이 아님) nanoTime ()이 필요한지 확실하지 않습니다. 이것은 루프를 둘러싼 루프의 진행 상황을 추적하는 ersatz 스톱 워치였습니다. nanoTime ()을 제거하면 루프 자체의 실행 속도 (하드웨어를 직접 호출하지 않음)도 여전히 소프트웨어이므로 컴퓨터 환경과 상호 작용하므로 결정적이지 않을 것이라고 생각합니다. 이것은 임베디드 키트에 대한 실시간 프로그래밍의 전체 기반입니다. 폰 노이만 (Von Neumann)의 인용문은 더 이상 현대 컴퓨터에는 적용 할 수 없다고 확신한다
Paul Uszak

1
@PaulUszak 몇 번이나 말해야합니까? 폰 노이만은 난수를 결정적으로 생성 할 수 없다고 말합니다. Von Neumann은 비결정론을 사용할 수 있기 때문에 잘못되었다고 계속 말합니다. “두 파리 사이를 날아갈 수 있기 때문에“파리에서 베를린까지 걸어가는 데 시간이 오래 걸린다”는 말은 현대 세계에는 적용되지 않는다고 반복해서 주장하는 것과 같습니다. 그래서 무엇? 견적은 걷기에 관한 것이며 여전히 오랜 시간이 걸립니다. Von Neumann의 인용문은 결정 론적 시스템에 관한 것이며 여전히 무작위로 작동 할 수 없습니다.
David Richerby

1
@PaulUszak 문자 그대로 불가능합니다. 입력에 의해 동작이 결정되지 않는 결정 론적 알고리즘이 있다고 생각되면 엔트로피가 도입되는 위치를 식별하기 만하면됩니다.
bmm6o

18

결정 론적 수단으로 난수를 생성하려고 시도하는 사람은 물론 죄의 상태에 살고 있습니다.

"죄 상태에서 산다는 것"이 ​​"넌센스를하는 것"으로 해석 할 때, 그것은 옳습니다.

당신이 한 것은 다소 느린 방법 System.nanoTime()을 사용하여 다소 약한 무작위성을 생성하는 것입니다. 당신은 일부를 측정

~ 5.3 비트 / 바이트의 엔트로피 속도 ...

그러나 이것은 단지 상한입니다. 당신이 얻을 수있는 것은 상한입니다. 실제 엔트로피는 수십 배 더 작을 수있다.

대신 MD5와 같은 암호화 해시를 사용하여 배열을 채우십시오. md5(0), md5(1), ...하나 이상의 바이트를 취한 각 값에서 중요하지 않은 시퀀스를 계산하십시오 . 전혀 압축이되지 않습니다 (예, MD5는 손상되었지만 압축 할 수없는 데이터를 생성하기에는 충분합니다).

우리는 엔트로피가 전혀 없다고 말할 수 있지만, 당신은 8 비트 / 바이트를 측정 할 것입니다.

실제로 임의의 것이 필요하면 HW 소스를 사용해야 할뿐만 아니라 실제로 생성되는 엔트로피의 양 대한 확실한 하한도 알아야 합니다. 에 임의성이있을 가능성이 가장 높지만 nanoTime(), 사소한 하한을 모릅니다.

암호화에 임의성이 필요하면 OS, 언어 또는 훌륭한 라이브러리에서 제공하는 것에 의존해야합니다. 이러한 공급자는 여러 소스 및 / 또는 전용 HW에서 엔트로피를 수집하며 이러한 엔트로피 추정에 많은 작업이 수행되었습니다.

엔트로피는 거의 필요하지 않습니다. 임의의 바이트로 초기화 된 좋은 (결정 론적) PRNG는 암호화 및 기타 모든 것에 사용할 수 있습니다.


4
결정 론적 PRNG 인 @PaulUszak Sure는 OTP로 사용할 수 없습니다. 그러나 OTP는 정의상 진정한 임의의 키가 필요하므로 매우 특별한 경우 입니다. 다른 무엇이든, 무작위로 시딩 된 보안 PRNG이면 충분합니다 (시드는 필요한 보안 레벨에 따라 128 또는 256 비트의 엔트로피를 가져야합니다).
maaartinus

3
"정말 임의의 것이 필요할 때"→ 기본적으로 진정한 임의성이 필요하지 않습니다. 오히려 상관 관계가 필요하지 않습니다. 진정한 무작위성은 강력한 보장이지만 기본적으로 모든 사례는 현대식 CSPRNG와 예측할 수없는 시드에 의해 만족됩니다.
Veedrac

3
@maaartinus 당신은 나를 잘 얻지 못했습니다. 나는 당신이 진정한 임의의 씨앗이 필요하지 않다고 말하고 있습니다. 예기치 못한 상관없는 씨앗 만 있으면됩니다.
Veedrac

6
예를 들어, 순차 번호가 100 만 개인 텍스트 파일을 만들었습니다. gzip엔트로피는 거의 없지만 압축률은 63 %에 불과했습니다. 다음과 같은 반복 만 감지 할 수 있습니다999919999299993...
Barmar

6
@PaulUszak 필자의 요점은 압축률이 엔트로피의 좋은 지표가 아니며 특정 압축 알고리즘이 데이터에 포함 된 패턴의 종류를 감지 할 수 있는지 여부를 나타냅니다.
Barmar

14

나는 "무작위"의 의미에 대해 잘 알고 있다고 생각했다. 여기서 대부분의 답변 은 결정적 프로세스의 결과와 비교하여 임의의 프로세스의 결과에 대해 이야기하고 있습니다. 그것은 "무작위"라는 완벽하게 좋은 의미이지만 유일한 것은 아닙니다.

랜덤 프로세스 출력의 한 가지 문제점은 결정 프로세스의 출력과 구별하기가 어렵다는 것입니다. 이것의 극단적 인 예는 유명한 XKCD 만화 로, 난수 생성기가 항상을 반환 4하는 코드 주석과 함께 다이 롤에서 나온 것으로 랜덤이라고 주장합니다.

Kolmogorov의 복잡성 이라고하는 "랜덤 성"을 정의하는 다른 방법 은 데이터 생성 방식에 관계없이 데이터 자체를 기반으로합니다. 일부 데이터 (예 : 일련의 숫자)의 Kolmogorov 복잡도는 데이터를 출력하는 가장 짧은 컴퓨터 프로그램의 길이입니다. 데이터가 Kolmogorov 복잡도가 높을 경우 데이터는 "보다 무작위"입니다.

PNG와 같은 압축 알고리즘을 사용하고 압축 전후의 길이를 비교하는 것은 Kolmogorov의 복잡성과 유사합니다. 그러나 Kolmogorov의 복잡성으로 인해 PNG와 같은 제한된 형식이 아닌 Turing-complete 프로그래밍 언어로 데이터를 프로그램으로 인코딩 할 수 있습니다. 그러한 인코딩 (프로그램)을 "압축 해제"는 그것들을 실행함으로써 수행되는데, 임의의 시간과 메모리가 필요할 수있다 (예를 들어, 우리의 퓨니 유니버스에서 이용 가능한 것 이상).

라이스 정리 는 일반적으로 영원히 반복되는 프로그램과 데이터를 출력하는 프로그램을 구별 할 수 없다고 말합니다. 따라서 일부 데이터의 Kolmogorov 복잡도를 찾는 것은 매우 어렵습니다. 데이터를 생성하는 프로그램을 작성하면 실제로 더 짧은 프로그램이있을 수 있지만 (더 낮은 복잡성), 우리가 찾을 수 없기 때문에 발견하지 못했습니다. 무한 루프와 구별하십시오. 콜 모고 로프의 복잡성은 계산이 불가능 하지만, Busy-Beaver 수를 알고 있다면 각 프로그램을 확인하는 시간을 제한하여 계산할 수 있습니다.

예제 데이터의 경우 Kolmogorov 복잡도 (예 : "내재적 임의성")를 찾으려면 동일한 바이트 시퀀스를 출력하고 길이를 취하는 가장 짧은 결정 론적 프로그램을 찾아야합니다.

이제 우리는 Kolmogorov 복잡성의 관점에서 귀하의 질문에 대답 할 수 있으며, 따옴표가 맞다는 것을 알았습니다. 우리는 결정적 수단으로 난수 (높은 Kolmogorov 복잡도)를 생성 할 수 없습니다.

왜 안돼? 작은 컴퓨터 프로그램을 작성하고이를 사용하여 일련의 난수를 생성한다고 가정 해 봅시다. 다음 상황 중 하나가 적용되어야합니다.

  • 우리는 방대한 양의 출력을 생성합니다. 그러나 우리 는이 출력이 작은 프로그램에 의해 생성된다는 것을 알고 있기 때문에 (정의 적으로) 출력은 Kolmogorov의 복잡성이 낮으므로 이런 의미에서 "임의"가 아닙니다.
  • 우리는 숫자를 너무 적게 만들어서 짧은 프로그램을 작성하는 것보다 거의 또는 조금 적은 비트를 사용합니다. 이 경우 숫자는 상대적으로 압축 할 수 없으므로 Kolmogorov 의미에서 상당히 임의적임을 나타냅니다. 출력의 양이 우리가 (프로그램의 소스 코드)에 넣어 것과 비교이기 때문에, 그것의 공정이 프로그램이 임의성을 "생성"하지 않은 말을, 우리는 그 프로그램을 선택하여 않았다. 결국이 경우에 우리의 생성 프로그램은 이러한 정확한 숫자의 목록 일뿐입니다 (예 :) print([...]).

두 경우 모두, 우리는 우리가 넣은 것보다 더 많은 무작위성을 생성하지 않습니다 (생성 프로그램 소스 코드의 "임의성"). 짧은 생성기의 출력을 피하기 위해 더 긴 생성 프로그램을 사용하여이 문제를 해결하려고 시도 할 수 있지만 두 가지 방법이 있습니다.

  • 어떤 식 으로든 코드를 체계적으로 "팽창"시킵니다. 그러나, 콜 모고 로프의 복잡성은 특정 프로그램에 대해 상관하지 않는다 우리가 데이터를 생성하는 데 사용 : 그것은 단지 걱정에 대해 어느 프로그램을 생성하는 가장 작은 것입니다. 코드의 이러한 패턴은 매우 적은 양의 코드로 생성 될 수 있기 때문에 체계적인 팽창은 Kolmogorov 복잡성을 추가하지 않습니다. 예를 들어 run(shortGenerator), 체계적인 팽창의 전체 부하를 가져와 추가 run(bloatedGenerator)해도 짧은 발전기는 여전히 형태가 존재합니다 run(addBloat(shortGenerator)).
  • 비 체계적으로 블로 트를 패턴없이 추가하십시오 . 즉, addBloat함수가 코드 자체만큼 팽팽 해져야합니다. 그러나 패턴이 결여되어있는 것은 무언가를 무작위로 만드는 것입니다 (높은 Kolmogorov 복잡성). 따라서, 이러한 방식으로 생성 프로그램 팽만감 않는 출력의 무작위성 (콜 모고 로프 복잡도)를 증가하지만, 또한 우리가 소스 코드의 형태로 제공 할 수 있다고 임의성 (콜 모고 로프 복잡도)의 양을 증가시킨다. 그러므로 프로그램이 아닌 "무작위"를 제공하는 것은 여전히 ​​우리의 일입니다. 위의 단순히 쓰기 예제에서 print([...]), 비 체계적 팽창을 추가하는 것은 하드 코딩 된 목록에 더 많은 "무작위"숫자를 쓰는 것과 같습니다.

"동일한 바이트 시퀀스를 출력하는 가장 짧은 결정 론적 프로그램을 찾으십시오."-이것이 내 주장의 요점 인 느낌표입니다. 이 이미지는 반복 할 수 없습니다. 매번 독특합니다. 이 패턴은 Java, JVM, OS, CPU + 캐시, 하드 디스크, 내가 스트리밍하고 있던 Trance 음악, CPU / RAM 사이클 및 그 사이의 모든 것을 상호 작용 한 결과입니다. 패턴은 단순히 for / next 루프 내부의 한 줄의 Java 코드에서 발생합니다. 엔트로피의 상당 부분은 기본 하드웨어 회로에서 비롯됩니다. 코딩 할 수 없습니다.
Paul Uszak

@PaulUszak Kolmogorov의 복잡성 은 게시 한 첫 번째 이미지와 같이 특정 값 의 "무작위"를 측정합니다 . 또는 두 번째로 올린 이미지; 또는이 HTML 페이지의 스냅 샷; 등 당신이 걱정하는 경우 처리 후 섀넌 정보와 같은 다른 조치가 더 적합 할 것 (결정 여부) 이미지를 생성; 나는 Kolmogorov의 복잡성을 언급 한 다른 답변이 없다는 것을 알았습니다. 그것들은 우리에게 다른 것을 알려주기 때문에 유용한 방법입니다.
Warbo

@PaulUszak 이러한 이미지를 PNG 파일로 압축하고 파일 크기를 비교하여 수행 한 테스트를 고려하십시오. PNG를 압축 해제하면 시작한 이미지와 똑같은 이미지가 다시 나타납니다. 결정 론적입니다. 당신은 다른 무작위 이미지를 얻지 못합니다 . 압축 테스트가 쓸모 없습니까? 전혀! Kolmogorov의 복잡성은 PNG 테스트의 극단적 인 버전과 같습니다. PNG 파일로 압축하지 않고 (결정 론적) 컴퓨터 프로그램으로 압축합니다. 사람들은 얻을 수있는 정말 여전히 원래 모든 데이터를 재현 할 수있는 반면, 작은.
Warbo

6
@PaulUszak 기반은 귀하의 의견에 당신이 이미 견적을 증명하기 위해 필요한 모든 것을 실현 것으로 보인다 : 당신이 하지 않은 사용 결정적 당신이에 의존하고 있기 때문에, 패턴을 생성하는 방법을 엔트로피 당신 또는 외부 (네트워크 하드웨어 및 서버 에서 스트리밍 중이거나 스트림의 콘텐츠 등 이 시스템에 도입되었습니다. 루프에서 촬영 나노초의 시간 측정의 마지막 8 개 비트를 확인 여부는 할 수있는 좋은 방법입니다 수확 엔트로피를 많은 대답을 끊었지고 별도의 질문은,하지만, 별도의 주제입니다.
mtraceur

7

압축은 무작위성에 대한 정확한 테스트가 아니며 이미지를보고 "임의로 보인다"고 말하는 것도 아닙니다.

무작위성은 경험적 방법 으로 테스트됩니다 . 실제로 임의성을 테스트하기 위해 특별히 설계된 소프트웨어 / 알고리즘 세트 (예 : TestU01Diehard 테스트)가 있습니다.

또한 이미지는 실제로 공간에 매핑 된 1D 숫자 문자열이므로 나타날 수있는 특정 패턴을 잘 표현하지 못합니다.

이미지를 픽셀 단위로 살펴보면 갑작스런 하락 전에 값이 증가하는 짧은 패턴이 많이 발견 될 것입니다. x 값이 샘플 번호이고 y 값이 '무작위'함수에서 얻은 값으로 그래프를 작성하는 경우 데이터가 실제로 톱니파처럼 보일 수 있습니다.

톱니파

이것은 모듈 식 산술 하에서 증가하는 값에 의해 만들어진 패턴입니다 (계산의 예 : 거의 일정한 속도로 시간이 증가하고로 & 0xFF작동 함 mod 256).


잘못된 테스트 세트가있는 것 같습니다. 모든 테스트는 무작위 합격 / 불합격 테스트입니다. 그들은이 질문의 핵심 인 엔트로피를 측정하지 않습니다. 압축은 비 IID 데이터에 대해 완전히 유효한 엔트로피 측정입니다 (NIST 엔트로피 측정 참조). 실제로 프로그래밍 및 수학에서 박사 학위없이 합리적으로 구현할 수있는 것 중 몇 가지 중 하나입니다. 톱니에 대해서는 맞지만. 그것은 같지만, 치아는 결정적으로 무작위 적이 지 않으며, 당신이 보여준 것처럼 규칙적이지 않습니다. 따라서 엔트로피.
Paul Uszak

2
@PaulUszak 압축 알고리즘에 의존하는 경우이 측정이 의미가 있습니까?
kutschkem

@kutschkem WEll은 NIST SP 800-90B의 표준 엔트로피 측정 중 하나입니다. 또한 쉽습니다. 비 IID 엔트로피를 어떻게 측정 할 수 있습니까? 그리고 압축 알고리즘은 하한에 대해 점근 적이므로 2로 나눕니다. Shannon 공식은 여기서 작동하지 않습니다.
Paul Uszak

3
@PaulUszak-암호화 목적으로 공격자가 생성 방법을 알고 있다고 가정해야합니다. 이 데이터가 생성 된 방법을 알면 PNG보다 더 나은 압축 알고리즘을 작성하거나 NIST 테스트가 수행하는 모든 방법에 대해 압축 알고리즘을 작성할 수 있습니다. 데이터 소스에 대해
Jules

5

"임의로 보이는 숫자"의 난수 개념을 혼동하고 있습니다.

폰 노이만 (Bon Neumann)의 인용문을 이해하려면 "임의의 숫자 생성"의 의미를 이해해야합니다. Warbo의 답변 은 탁월한 XKCD 를이 목적에 연결합니다 . XKCD 만화

난수에 관해 이야기 할 때, 우리는 그 가치 자체에 대해 이야기하지 않습니다. 분명히 4는 3보다 랜덤하지 않습니다. 우리는 랜덤 확률보다이 값을 더 잘 예측할 수있는 제 3 자의 능력에 대해 이야기하고 있습니다. 난수는 예측할 수없는 숫자입니다. 때때로 우리는 이것에 조건을 추가 할 것입니다. CSPRNG (암호화 보안 의사 난수 생성기) 는 공격자가 시드 / 키를 모르는 경우 무작위 확률보다 예측할 수없는 숫자를 생성 하지만 실제 난수 (의사 난수가 아님)에 대해 이야기하는 경우, 일반적으로 키를 포함하여 시스템에 대한 완전한 지식이 있어도 예측할 수없는 숫자로 정의됩니다.

많은 사람들이 지적한 것처럼 지금 당신의 모범은 결정적이지 않습니다. 프로그램은 어떤 값이 나오는지 지정하지 않습니다 System.nanoTime(). 따라서 의사 난수를 생성하기 위해 CSPRNG를 사용하는 것과 같은 클래스에 있지 않습니다. 전자는 비 결정적 일 수 있지만 후자는 키의 값이 결정적이면 결정적이다. 전자는 결정적 값을 갖도록 정의되지 않은 조작을 포함합니다.

그러나 당신은 그것이 결정적 이지 않을 수 있다고 말했습니다 . 그 인식 함 System.nanoTime()이 목적을 위해 값을 제공하도록 설계되지 않았습니다. 충분히 비 결정적 일 수도 있고 아닐 수도 있습니다. 응용 프로그램은 System.nanoTime()모두에 대한 호출 이 256 나노초 (또는 닫기)의 배수에서 발생 하도록 시스템 시계를 조정할 수 있습니다 . 또는 최근 Spectre를 악용하여 주요 브라우저에서 타이머의 해상도를 의도적으로 낮추는 Javascript로 작업하고있을 수 있습니다 . 이 경우 계획하지 않은 환경에서 "임의 숫자"를 예측할 수있게됩니다.

  • 결정 론적 과정으로 죄수를 생성합니다 ... 죄.
  • 전용 랜덤 하드웨어로 난수를 생성하는 것은 죄가 아닙니다.
  • 컴퓨터의 비 결정적 측면에서 난수를 생성하는 것은 아마도 죄일 수 있습니다.

그것은 모두 당신이 의도 한 것에 달려 있습니다. 당신의 자매가 그것을 읽을 수 없도록 당신의 연애 편지를 스폰지 밥에 암호화하는 경우, 소위 난수에 대한 요구는 매우 낮습니다. System.nanoTime()당신이 한 것처럼 아마 충분합니다. 적극적으로 찾는 선진 외국 국가로부터 핵 비밀을 보호하고 있다면 도전에 맞도록 설계된 하드웨어를 사용하는 것이 좋습니다.


4

나는 당신이 그 주장을 이해하지 않았다고 생각합니다. 요점은 '무작위'숫자 시리즈 (또는 다른 것)를 생성하는 결정 론적 절차가 있다면 패턴을 찾는 것이 단지이 절차를 찾는 작업이라는 것입니다!

따라서, 다음 정수를 예측하는 결정 론적 방법이 항상 존재한다. 이것은 우리가 임의성을 가정하면 일어날 것으로 예상되지 않는 것입니다!

충분히 복잡한 결정론은 확률론과 구별 할 수 없습니다.

--from Wrzlprmft의 사용자 페이지

그러므로 어떤 것이 무작위로 보일 지라도 , 왜 결정적인 절차가 있다면 그것을 왜 '무작위'로 모델링할까요?

이것이 핵심 문제라고 생각합니다. 당신은 PRNG와 '진정한 무작위성' 의 구별 할 수없는 형태를 보여주었습니다 .

그러나 이러한 개념이 동일하다는 것은 따르지 않습니다. 특히, 임의성은 수학적, 이론적 개념입니다. 우리는 이미 이론적으로 PRNG를 '진정한 무작위성'으로 간주하면 모순이 발생한다는 것을 이미 보여주었습니다. 그러므로 그들은 같을 수 없습니다.


1
오류, 당신은 그 인용문을 이해 했습니까? 당신은 스스로 모순되는 것 같습니다 ..?
Paul Uszak

내가? 당신은 명확히 할 수 있습니까? 나는 당신이 무언가를 무작위로 취급하고 싶다면, 누군가가 그 차이를 볼 수 없더라도 결정적으로 생성하는 것은 무의미하다고 말하려고했습니다.
이산 도마뱀

2
@PaulUszak 당신은 무언가가 당신에게 확률 적으로 보이기 때문에 무작위라고 주장합니다. 그러나 실제로 확률 론적으로 보이는 것만으로 그것이 무작위 적이라는 것을 의미하는 것은 아닙니다. 그것은 충분히 복잡한 결정 론적 과정 일 수도 있습니다.
Gilles 'SO- 악마 중지'

영형(2)

3

나는 다른 사람들이 이미 지적했다고 생각하지만 그것이 강조된 것은 아니기 때문에 토론에 추가하도록하겠습니다.

다른 사람들이 이미 지적했듯이, 엔트로피를 측정하는 문제가 있습니다. 압축 알고리즘은 무언가를 말해 줄 수도 있지만 소스에 구애받지 않습니다. 데이터 생성 방법에 대해 더 많이 알고 있기 때문에 압축 하는 데 훨씬 더 나은 알고리즘을 해석 할 수 있으며 이는 진정한 엔트로피가 훨씬 낮다는 것을 의미합니다.

또한 "컴퓨터에서"와 "결정적"이라는 문구의 의미를 다소 잘못 이해하고 있습니다. 당신은 확실히 결정적 수행 할 수있는 컴퓨터에서 작업을.

또한 실제로는 방금 수행 했지만 언뜻보기에는 그다지 분명하지 않습니다.

난수 생성을위한 전형적인 결정 론적 알고리즘은 즉. 선형 합동 발생기와 같은 PRNG. 상태가 양호합니다. 내부 상태는 다음 상태가 이전에 의해 결정되므로 엔트로피가 적음을 의미합니다. 나는 그것에 대해 탐구하지 않을 것입니다. 아마 당신에게는 분명 할 것입니다. 중요한 점은 완전히 결정론적인 알고리즘이 이전 상태에 달려 있다는 것입니다.

이제 알고리즘을보십시오. 무엇을 기반으로합니까? 당신은 얼마나 많은 주가 있습니까? 결정 론적입니까?

  file.writeByte((byte) (System.nanoTime() & 0xff));

file.writeI / O를 기다리는 버퍼 플러시 문제를 무시 하고 (하드 드라이브 케이블에 잠시 동안 노이즈를 추가하려고 했습니까? 아니오? 할 수 있습니다. 소스에 집중하자, 더 중요합니다.

시간 상태의 일종이다. 다양하지만 대부분 동일합니다. 그렇기 때문에 당신은 그것을 피하려고 시도하고 & 0xFF를 사용하여 대부분 의 주를 버렸습니다 . 그러나 모든 것을 삭제하지는 않았으므로 이전 읽기의 일부 상태가 다음 읽기로 누출 될 수 있으므로 완전히 비 결정적이지는 않습니다. *)

그러나 우리는 그것에 관심이 없습니다. 인용이 틀렸다는 것을 "증명"하려면 :

결정 론적 수단으로 난수를 생성하려고 시도하는 사람은 물론 죄의 상태에 살고 있습니다.

결정적 수단으로 증명해야합니다.
우리가 관심을 갖는 것은 : 당신의 알고리즘이 완전히 결정 론적 입니까?

.. 그리고 그렇지 않은 것이 분명합니다.

  System.nanoTime() & 0xff

그것은 시간 측정입니다. 시간측정 . 값이 캐시되면 측정 부분이 결정적 일 수 있습니다. 그렇지 않다고 가정 하면 그렇지 않으면이 기능은 의미가 없습니다. 그런 다음 소스에서 즉시 읽는 경우 시간 기반 값이 있습니다. ( 다시 가정합니다 ) 단일 작업 전용 하드웨어에서 실행하지 않았으므로 때때로 상황 전환 발생할 수 있습니다. 단일 작업 전용 하드웨어를 사용하더라도 시간 소스의 온도 / 습도 드리프트, 버스 클럭 시간 등으로 인해 시간 측정이 결정적이지 않을 수 있습니다.

나는 내가 여기에서 평가하고 있다는 것에 전적으로 동의한다. 드리프트는 그다지 큰 영향을 미치지는 않을 것입니다 (실제 일지라도 nanotime). 더 중요한 것은,nanotime 빠르다는 의미입니다. 실시간 소스에서 읽지 않습니다. 프로세서의 내부 명령 / 사이클 수를 기반으로합니다. 컨텍스트 전환을 보장하지 않으면 실제로 결정적입니다.

내 요점은, 당신이 시간을 기준으로 진정으로 100 % 결정 론적 알고리즘을 실행하는 것은 실제로 매우 어려울 수 있으며, 당신이 완전히 결정 론적 수단을 가지고 있지 않으면 그 인용문을 반증 할 권리가 없습니다.

*) 흥미롭게도, 하드 코어 방식으로 가면 실제 임의성을 높일 수 있습니다. 각 비트를 읽기 전에 비트 단위로 & 0x01을 수행하고 스레드 대기 시간이 눈에 wait니다. 그런 식으로 데이터를 생성하는 것은 엄청나게 길지만 실제로는 거의 무작위로 간주 될 수 있다고 주장합니다. 비 RTOS에서 실행중인 IIF 및 각 '알릴 수있는 시간'의 IFF는 기본을 보장하기에 충분히 높습니다 OS가 절전 모드로 전환되었거나 다른 작업으로 컨텍스트 전환되었습니다.


2
에이에스

"[당신은 훨씬 더 나은 [압축] 알고리즘을 구성 할 수 있습니다."
quetzalcoatl

정확한 5.3 값으로 고정되지 마십시오. 압축 알고리즘을 더 잘 만들 수 있는지에 관계없이 (세계에서 가장 좋은 것을 사용할 수는 없습니다-paq8px) 압축 할 수없는 것은 순수한 엔트로피입니다. 이것이 무작위성에 대한 기본 정의 중 하나입니다. 아니면 아무것도 0 바이트로 압축 할 수 있다고 제안합니까? 비둘기 애호가들은 동의하지 않을 것입니다.
Paul Uszak

64 비트 정수를 사용하여 좋은 그림을 만들 수 없기 때문에 0xff가 있습니다. 그리고 0x01을 사용하면 귀찮게 할 수없는 비트 처리로 엉망이되어야합니다. 그게 다야. NIST 엔트로피와 내 자신의 측정법은 어쨌든 더 높은 비트의 엔트로피를 제안합니다 (~ 5).
Paul Uszak

1
+1, 그리고 이것은 지금까지 가장 좋은 대답 인 것 같습니다 : 질문되는 상황에서 엔트로피 의 유일한 원천은 시계의 각 판독 사이에 얼마나 많은 시간 이 지났는가에 대한 불일치입니다 ! 그리고 이것은 운영 체제 스케줄러의 작동 방식과 하드웨어의 작동 방식 및 사용자가 해당 시스템에 대해 수행 한 것과 같은 세부 사항이 혼합되어 일정에 필요한 다른 것 또는 디스크 길이에 간접적으로 영향을 미칩니다. 액세스는 시간이 지남에 따라 조각화되거나 스왑 / 메모리 / 캐시에 있던 내용 또는 진행중인 네트워크 / 등 활동으로 인해 발생했습니다.
mtraceur

2

나는 당신이 필요로하는 대답은 당신이 대답 한 다른 의견으로 시작한이 의견으로 시작한다고 생각합니다.

이 패턴은 Java, JVM, OS, CPU + 캐시, 하드 디스크, 내가 스트리밍하고 있던 Trance 음악, CPU / RAM주기 및 그 사이의 모든 것을 상호 작용 한 결과입니다. 패턴은 단순히 for / next 루프 내부의 한 줄의 Java 코드에서 발생합니다. 엔트로피의 상당 부분은 기본 하드웨어 회로에서 비롯됩니다.

당신은 이미 이것을 알고 있다고 생각합니다. 패턴을 만들기 위해 결정 론적 수단을 사용하지 않았습니다 .

무시할 수없는 부분을 결정하는 컴퓨터를 사용했지만 엔트로피는 외부의 비 결정적 (또는 현재 모든 실제적인 의도와 목적을 위해 결정적이지 않은) 소스에서 비롯된 것입니다. 컴퓨터를 사용하여 (그리고 하드웨어 하드웨어의 물리적 결함으로 인해 타이밍에 영향을 줄 수 있음)

그건 그렇고, 이것은 현대 운영 체제가 프로그램에서 사용할 수있는 난수 생성기를 심는 방법의 큰 부분입니다. 하드웨어 및 사용자와 상호 작용하여 엔트로피를 활용하여 공격자가 예측할 수없는 사용자입니다.

그건 그렇고, 외부 세계 엔트로피는 실제로 잘 코딩 된 암호화에서 오늘날까지 처리 해야하는 문제입니다. 예측할 수있는 행동을읽기 전용 스토리지가 있거나 네트워크에서 부팅하는 경우 및 예측 가능한 네트워크 환경이있는 부팅 및 런타임시 (네트워크에 연결되지 않았거나 네트워크의 워크로드가 충분히 낮아서 대략 일정한 동작으로 동일한 제한된 소프트웨어 세트를 실행하는 신뢰할 수있는 시간)은 예측할 수없는 것으로 추정되는 구성 요소에서 얻는 엔트로피를 크게 과대 평가하여 훨씬 더 예측 가능한 숫자를 생성 할 수 있습니다. 백그라운드에서 음악을 스트리밍하거나 드롭 박스와 동기화하는 등 모든 종류의 다른 작업을 수행하는 일반적인 워크 스테이션을 사용하는 것보다

루프에서 취한 나노초 단위의 마지막 8 비트 시간 측정을 확인하는 것이 엔트로피를 수확하는 좋은 방법인지에 대한 대부분의 답변이 집중되고 있다고 생각합니다. 이것은 실제로 임의의 숫자 생성 체계로 예제의 방법을 사용 하기 전에 올바르게 대답 하는 매우 중요한 질문 이지만 , 내가 생각하는 것과는 다른 질문입니다.


0

이전 답변에 추가하려면이 질문에 대해 쉽게 생각할 수 있습니다.

그것은 랜덤결정론 의 차이점에 관한 것입니다. 입니다. 우리는 Von Neumann과 그가 말한 것을 보게 될 것입니다.

난수

진정한 난수 생성기는 배경에 숨겨져 있지 않은 패턴이 없으므로 지금까지의 시퀀스에서 주어진 다음 숫자를 예측하는 데 사용할 수 있습니다. 이상적인 세계에서, 당신은 물리적 우주와 시스템에 대해 알아야 할 모든 것을 알 수 있습니다.

실제 상황에서 우리는 "나쁜 근사치"가 아니거나 진정으로 무작위이거나 많은 수학적 소스를 수학적으로 혼합하여 예측할 수없고 특정 숫자 나 패턴에 대한 편견이 없습니다.

  • "양호한"소스는 방사성 붕괴 프로세스 또는 본질적으로 예측할 수없는 다른 양자 프로세스를 기다리는 것과 유사합니다. 열에 민감한 반도체에서 출력. 다이오드 또는 기타 전기 재료의 임의 노이즈 태양에서 광자를 계산합니다.

  • 이것에 섞여서, "나쁘지 않다"고 생각되는 것을 추가 할 수 있습니다. 다음 마우스 클릭이나 네트워크 패킷을 기다리는 중입니다. 다음 파일 쓰기시 마지막 마이크로 비트 시간. "알지만 수학적으로 꽤 임의적 인"의사 난수 생성기 함수의 출력. 난수의 이전 사용에서 얻은 이전 엔트로피.

여기서 목표는 , 당신이 아는 우주에서 , 여전히 예측할 수없는 수치를 얻는 것이며, 수학적으로 감지 가능한 패턴, 편향 또는 예측 성이없고, 모니터링하고 예측에 사용할 수 있습니다. (또는 이벤트와 상관 관계가있는 경우 "마지막 마우스 클릭시 나노초 자릿수"와 같이 연결이 매우 좁아지는 방식으로 수행됩니다.)

결정적 숫자

수학자들은 수식과 함수에 대한 것을 증명할 수 있습니다. 따라서 반복적으로 호출 될 때 함수가 단순한 패턴 "반복적으로 호출되는 경우 해당 함수의 출력"이외의 패턴에 대해 어떠한 편견이나 선호도를 제공하지 않음을 증명할 수 있습니다.

예를 들어, 1 백만에서 1 천만 사이의 숫자를 선택하고 이진수로 쓰고 반복해서 "해시"하면 꽤 임의의 숫자가 표시됩니다. 거의 무작위이지만 실제로는 무작위가 아닙니다. 주어진 알고리즘과 상태, 다음 숫자가 무엇인지 예측할 수 있습니다.

우리는 그것이 "의사 난수"라고 부릅니다. 왜냐하면 그것이 아닌 경우에도 주로 무작위로 보이는 것처럼 보이기 때문입니다.

좋은 예가 있습니다. 983, 367, 336, 244, 065, 664, 308, 602, 139, 494, 639, 522, 473, 719, 070, 217의 3 자리 "임의의 숫자"순서를 생각해보십시오. 같은 방식으로 백만 개의 숫자를 생성 할 수 있습니다. 그런 다음 통계 학자에게 전달하여 통계가 동일하거나 어떤 것이 든 배포되는지 확인할 수 있습니다. 명백한 예측 가능한 패턴은 없습니다. 그들은 꽤 무작위로 보입니다. 하지만 지금은 그들이 실제로

Pi의 500 번째 자리 숫자는 3 초 단위로 그룹화됩니다.

갑자기, 그러나 무작위

Pi의 자릿수

다음 두 숫자가 986과 094가 될 것이라고 즉시 예측할 수 있습니다.

분명히하기 위해, 나는 정확히 얼마나 무작위인지 모른다.

Pi의 자릿수

아르. 그것은 연구되었고 그 대답은 잘 알려져있을 것입니다. 그러나 요점은 이것이다. 원칙적 으로 결정 론적 과정에 따라 생산되는 모든 출처에 대해 동일한 결론이 적용 된다 .

사이

이 둘 사이에는 "임의로 보이고 종종 어느 정도 무작위 인 것"의 전체 범위가 있습니다. 임의성과 거의 임의성이 섞일수록 출력이 수학적으로 어떤 패턴을 감지하거나 예측할 수있는 경향이 적습니다.

폰 노이만과 질문으로 돌아 가기

보시다시피, 결정 론적 결과는 무작위로 보일 수 있지만 통계적으로 무작위로 분포 될 수도 있습니다. 그들은 "비밀"또는 빠르게 변화하는 데이터를 사용하여 우리가 실제로 알고 싶어하지 않을 수도 있습니다. 그러나 결정적 인 한, 숫자는 여전히 정확히 무작위 일는 없습니다 . 그것들은 "차이를 잊어 버리기 위해 무작위로 충분히 근접 할 수 있습니다".

그것은 당신이 준 인용의 의미입니다. 결정 론적 프로세스는 난수를 줄 수 없습니다. 난수처럼 보이고 숫자처럼 행동하는 숫자 만 줄 수 있습니다.

우리는 이제 다음과 같이 당신의 질문을 바꾸어 놓을 수 있습니다 : "내 (또는 현대의) 컴퓨터의 결과물이 완전히 무작위로 보이고 행동 할 수 있습니다. von Neumann의 인용문이 구식이면서 잘못 되었습니까?"

문제는 아직 이것이다 : 컴퓨터의 출력을보고 무작위로 작동 할 수 있습니다하더라도, 그것은 여전히하지 않을 수 있습니다 진정으로 무작위 . 그것이 결정 론적으로 만 계산된다면, 그것은 다음 숫자를 gettinbg에 대해 예측할 수없는 원인-효과가 없다는 것을 의미합니다. 우리는 일부 기존 데이터 (알려진)로 시작하고 알려진 프로세스 (복잡하거나 지저분하거나 다른 것)를 적용하고 새로운 "임의 숫자"로 보이는 것을 얻습니다. 그러나 프로세스가 결정론 적이기 때문에 무작위가 아닙니다.

분석법에 실제 하드웨어 무작위 생성기가 포함되어 있다고 수정하면 (반도체의 방사성 붕괴 또는 소음으로 생성 된 임의의 숫자와 같은) 임의의 응답이 될 수 있습니다. 그러나 정의에 의한 방법은 더 이상 결정적이지 않습니다. , 어떤 더 입력 / 초기 데이터 (원인) 주어진 출력 (또는 효과)를 정확하게 예측할 수 있기 때문에 .

폰 노이만 (Von Neumann)은 거의 정의에 의해 두 가지 방식으로 승리합니다!

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