, 및 와 같은 비이성적 인 숫자 는 소수점 뒤에 고유하고 반복되지 않는 순서를 갖습니다. 그러한 숫자에서 번째 숫자를 추출하고 (여기서 은 메소드가 호출 된 횟수입니다) 숫자를 그대로 사용하여 완벽한 난수 생성기를 얻지 않아야합니까? 예를 들어, , 및 를 사용하는 경우 첫 번째 숫자는 123, 두 번째 숫자는 471, 다음 숫자는 184 등입니다.
, 및 와 같은 비이성적 인 숫자 는 소수점 뒤에 고유하고 반복되지 않는 순서를 갖습니다. 그러한 숫자에서 번째 숫자를 추출하고 (여기서 은 메소드가 호출 된 횟수입니다) 숫자를 그대로 사용하여 완벽한 난수 생성기를 얻지 않아야합니까? 예를 들어, , 및 를 사용하는 경우 첫 번째 숫자는 123, 두 번째 숫자는 471, 다음 숫자는 184 등입니다.
답변:
가장 명백한 단점은 비이성적 인 수에 기반한 PRNG 알고리즘의 불필요한 복잡성입니다. LCG보다 생성 된 숫자 당 훨씬 더 많은 계산이 필요합니다. 이 복잡성은 일반적으로 시퀀스를 진행함에 따라 커집니다. 2 천만 비트에서 256 비트의 π를 계산하는 데 1000 대의 컴퓨터에서 23 일이 걸렸으며 (2010 년) RNG의 경우 다소 복잡합니다.
완벽한 완벽한 합리적 정의의 경우, 설명하는 메커니즘은 완벽한 난수 생성기가 아닙니다.
반복하지 않는 것만으로는 충분하지 않습니다. 십진수 반복되지는 않지만 답은 "항상"0, 때로는 1, 다른 것은 없기 때문에 임의의 숫자를 생성하는 끔찍한 생성기입니다.
우리는 실제로 모든 숫자가 또는 의 십진 확장에서 똑같이 자주 발생하는지 알지 못합니다 (그렇지만 의심합니다).
많은 상황에서 우리는 임의의 숫자를 예측할 수 없어야합니다 (실제로 임의의 사람에게 "무작위"의 의미를 물으면 예측할 수없는 것에 대해 말할 것입니다). 잘 알려진 상수의 숫자는 완전히 예측 가능합니다.
우리는 일반적으로 임의의 숫자를 합리적으로 빠르게 생성하려고하지만 수학적 상수의 연속 자릿수 생성은 상당히 비싸다.
그러나 와 의 자릿수는 통계적으로 무작위로 보이는데, 가능한 모든 자릿수 순서가 자주 발생하는 것처럼 보입니다. 예를 들어, 각 숫자는 10 분의 1에 매우 가깝습니다. 각 두 자리 수열은 100 개 중 1 개에 매우 가깝습니다.
공격자가 모든 한 자리를 예측할 수 있기 때문에 암호 적으로 쓸모가 없습니다. 또한 시간이 많이 걸립니다.
/dev/random
하고 /dev/urandom
누군가가 변함없이 암호화를 가져올 것이다.
( 많은 사람들이 난수 생성기가 단일 정규 시퀀스와 동일하지 않다고 지적한 후 업데이트 됨 )
에서 정규 시퀀스를 얻을 수 있는지 묻는 경우 (즉, 모든 숫자가 균일하게 표시됨) mathoverflow에 대한 몇 가지 답변이 있습니다. 예를 들어 Pi의 자릿수 분포에 대한 답변 은 다음과 같습니다.
... π 는 정상적인 숫자 라고 생각 합니다 (~ 모든 자릿수 시퀀스의 균일 한 분포).
자릿수 분포 데이터는 예 : http://www.eveandersson.com/pi/precalculated-frequencies 또는 https://thestarman.pcministry.com/math/pi/RandPI.html (처음 1000 자리)을 참조하십시오 .
mathoverflow에는 다음과 같은 훌륭한 답변이 있습니다.
일반적으로이 접근 방식은 효과가 없습니다. "무작위"라는 말은 많은 다른 숫자를 얻는다는 의미는 아니지만 다른 측면도 있습니다. 예를 들어, 고전적인 테스트는 두 자리 또는 세 자리 등의 모든 조합이 동일한 빈도로 발생하는지 확인하는 것입니다. 이것은 매우 간단한 테스트인데, 이는 명백한 비임의 결과를 배제 할 수 있지만, 실제로는 임의의 행동을 확인하기에는 너무 단순합니다.
이에 관한 기본 소스에 대한 링크 모음으로 무작위성 테스트 에 대한 Wikipedia 페이지를 참조하십시오 . 그들은 상당히 복잡한 소리를내는 개념을 많이 언급합니다. 이에 대해 자세히 설명하는 것은 중요하지 않지만 특정 숫자를 이러한 숫자의 좋은 소스로 선언하는 것은 직관적으로 불가능합니다.
긍정적 인 점 : 특정 비합리적인 숫자의 경우, 당신은 그것을 시도해 보는 것이 자유 롭습니다; 즉, 숫자를 충분히 큰 자릿수로 계산하고 알려진 모든 테스트를 통해 실행하십시오 (그 도구는 위 링크 참조). 측정은 사용 사례에 대한 충분한이며, 당신이 알고있는 경우이 cryptographical 애플리케이션에 분명히 쓸모없는, 당신이 시작하는 경우는 항상 같은 번호를 얻는다면, 당신은 과거를 얻을 경우 품질이 저하 될 수 있음을 경우 n
당신이 고른 임의성을 테스트하기 위해 해당 숫자를 사용할 수 있습니다. 그러나 전용 (의사) 난수 생성기를 사용하는 것이 훨씬 좋습니다. 그리고 물리적으로 임의의 좋은 소스를 능가하는 것은 없습니다.
많은 의사 난수와 마찬가지로 생성 방법을 알기 전까지는 정확한 난수를 제공합니다. 선택한 비이성적 인 (대수 및 초월이 아닌) 숫자는 일반적이며 다른 숫자보다 추측하기 쉽습니다. 덜 일반적으로 보이는 발전기를 선택하면이 방법에 아무런 문제가 없습니다.