인간이 임의의 숫자를 생성 할 수있게하는 실용적이고 배우기 쉬운 "인-헤드 (in-head)"알고리즘을 알고 있거나 고안 했습니까? "인-헤드 (in-head)"는 바람직하게는 외부 도구 또는 장치가없는 것을 의미한다. 또한, 높은 출력 (분당 많은 난수)이 바람직하다.
SO에 이것을 물었지만 많은 관심을 얻지 못했습니다. 아마도 이것은 프로그래머에게 더 적합 할 것입니다.
인간이 임의의 숫자를 생성 할 수있게하는 실용적이고 배우기 쉬운 "인-헤드 (in-head)"알고리즘을 알고 있거나 고안 했습니까? "인-헤드 (in-head)"는 바람직하게는 외부 도구 또는 장치가없는 것을 의미한다. 또한, 높은 출력 (분당 많은 난수)이 바람직하다.
SO에 이것을 물었지만 많은 관심을 얻지 못했습니다. 아마도 이것은 프로그래머에게 더 적합 할 것입니다.
답변:
George Marsaglia 의 알고리즘은 다음과 같습니다 .
"씨"라는 23 자리 숫자를 선택하십시오.
새로운 2 자리 숫자를 만드십시오 : 10 자리에 6 자리를 곱한 숫자.
예제 시퀀스는 23-> 20-> 02-> 12-> 13-> 19-> 55-> 35-> ...입니다.
그것의주기는 계수 10에 상대적으로 소수 인 잔류 물 그룹에서 승수 6의 순서이다 (이 경우 59).
"랜덤 숫자"는 2 자리 숫자의 단위 숫자입니다. 즉, 3,0,2,2,3,9,5, ... 시퀀스 모드 10입니다. 산술은 간단합니다. 머리.
Geomancy에서이 기사를 확인하십시오 . 특히 Geomantic 차트 생성에 관한 섹션 . 여기에는 이진수와 몇 가지 간단한 재귀 계산을 사용하는 의사 난수 생성 기술이 포함됩니다. 머리에서 이것을 쉽게 할 수있는 것처럼 보입니다 (종이가 도움이 될지라도).
면책 조항 : 나는 그것을 직접 시도하지 않았습니다. 충분히 임의의 숫자가 필요할 때의 출력을 얻 거나 편리한 언어로 /dev/random
사용 rand
하거나 신뢰할 수있는 d20을 굴립니다.
당신이 수학 신동 자라면 , Middle-square 방법 은 눈에 띄게 신뢰할 수없는 방법이라면 상당히 계산적으로 가볍습니다.
합리적인 생각은 당신이 당신의 두뇌에 저장하는 방대한 양의 언어 정보에 의존해야한다는 것입니다. 소스는 노래 가사,시, Monty Python 스케치 등 무엇이든 될 수 있지만, 마음에 드는 부분이어야합니다.
그런 다음 무의식적 편견을 최대한 제거하면서 상당히 임의의 부분을 선택해야합니다. 예를 들어 노래를 선택하고 k
10에서 20 사이 의 숫자 를 선택한 다음 k
가사에서 글자 를 찾는 방법이 있습니다.
분명히 글자의 빈도가 다르기 때문에 균일하게 분포되지는 않지만 임의의 글자이지만 적어도 외부 소스가 없으면 가능하다고 생각되는 것과 비슷합니다.
업데이트 : 사람들이 무작위로 동전 던지기 시퀀스를 작성하도록 요청받을 때 가장 일반적인 실수는 시퀀스를 너무 무작위로 만드는 것입니다. 동일한 결과의 실행은 너무 짧아서 간단한 실행 길이입니다. 분석이 드러날 것입니다. 이 방법은 주로이 트랩을 피하기위한 것입니다. 물론이 런 길이 바이어스의 그림자에서 다른 이상 현상이 발생할 수 있지만이를 찾으려면 적절한 실험이 필요합니다. 아이러니하게도, 혼자서 생각함으로써 난수를 생성하는 알고리즘은 혼자서 생각하면 찾을 수 없습니다.
60 (초)의 임의의 숫자가 필요한 경우이 작업을 수행합니다. 어떤 시간이든 적절한 모듈로를 사용하십시오. 4:17:23 PM, 다이 롤을 시뮬레이션하면 5가됩니다.
훌륭한 질문입니다. 나는 좋은 대답이 매우 어려울 수 있다고 두려워합니다.
그러나 처음에는 두 사람이 관여 할 때“진정한”임의성을 생성하는 것이 매우 쉽습니다. 단순히 한 사람이 머리 계수에서 몇 개의 숫자를 조용히 계산하고 다른 사람은 임의의 간격을두고 "정지"라고 말합니다. 나중에이 수는 표준 방법을 사용하여 다른 분포로 변환 할 수 있습니다.
이 방법을 견고하게 만들려면 계수가 너무 크면 안됩니다. 그렇지 않으면 작은 숫자에 대한 강한 편향이 있습니다. 이 방법의 확률 적 특성을 분석하는 작업이 있는지 정말 관심이 있습니다.
이것은 복잡한 질문입니다. 나는 잡초로 너무 멀리 방황하지 않고 조금 설명하려고 노력할 것이다.
먼저 " 진정한 무작위성이란 무엇입니까?" 그러한 논의는 철학적 물로 빠르게 퇴화되지만, 요점은 "우주가 정말로 무작위 적인가?"입니다. 다시 말해, 시간과 물질을 양자화하면 현재 우주에서 다음 우주 상태를 계산할 수 있습니까? 그렇다면 우주는 결정 론적이며 진정한 무작위성이 없습니다 ( "철학적"에 대한 의미는 무엇입니까?)
"진정한 무작위성"을 정의하기가 어렵 기 때문에 종종 "의사 난 수성"을 결정합니다. 이것은 일반적으로 컴퓨터에서 "무작위"숫자를 생성 할 때 필요합니다.
가장 단순한 의사 난수 생성기는 Dilbert의 유명한 "9 .. 9 .. 9 .."알고리즘과 유사합니다. 그러나 직관적으로 그것은 좋지 않은 것처럼 보입니다 (물론 농담입니다). 통계 학자들은 무작위로 랜덤 한 출력 시퀀스가 "좋은"지 여부를 확인하기 위해 전체 테스트를 개발했습니다. "chi squared test"에 대한 wikipedia 페이지로 시작하면 오후에이 테스트에 대해 읽을 수 있습니다.
"선형 합동 발생기"와 같은 간단한 컴퓨터 알고리즘은 카이 제곱 테스트에 적합한 숫자를 생성합니다 (그러나이 알고리즘을 무언가에서 "씨앗"해야합니다).
"양호성"의 다음 단계는 "암호 적으로 강력한 임의성"입니다. 즉, 시퀀스 a1, a2가 주어진 경우 많은 계산을 사용하지 않으면 "합리적인 확률"로 시퀀스의 다음 숫자를 예측할 수 없습니다. 이 숫자는 때때로 "계산 상 의사 난수"라고합니다. 이러한 시퀀스를 얻는 한 가지 일반적인 방법은 다음과 같은 "해시 체인"을 사용하는 것입니다. a1 = SHA512 (a2), a2 = SHA512 (a3), ... SHA512가 (수학적 증거가 아니라 경험에 기초 함) 믿고 있기 때문에 계산적으로 뒤집기 어려운, 우리는 a2가 주어진 a1 만 예측하기에는 "불가능"하다고 믿는다.
이제 질문이 생겼습니다. 질문에 규정 된 규칙에 따라 인간이 할 수있는 가장 좋은 일은 무엇입니까? 인간은 무작위성을 생성하는데 악명이 높다. 예전에는 동전을 뒤집는 것처럼 H, T, T, H, H, T, T 등을 "임의로"입력하여 동전 뒤집기를 생성하려고하는 웹 사이트가있었습니다. 너의 머리). 잠시 후, 웹 사이트는 시간의 50 %보다 더 나은 플립을 예측하기 시작합니다 (숨겨진 Markov 모델 사용). 우리는 이것에 나쁘다.
머리에서 할 수있는 다양한 혼합 기술을 사용하여 상황을 개선 할 수있는 방법이 있습니다. 그리고 왜 당신이 이것을 원할 지에 대한 꿈을 꾸는 응용 프로그램도 있습니다 (정치범은 외부 동맹국에게 메시지를 암호화하고 싶어합니다). 그러나 나는이 게시물이 충분히 길다고 생각합니다. :)
공구 기반 RNG가 확산되는 이유는 난수 생성을위한 우수한 인-헤드 알고리즘이 아직 개발되지 않았기 때문입니다 .
다행스럽게도 플롭 핑용 코인, 롤링 용 주사위 (다양한 패싯 포함), 피킹 용 카드 및 드로잉 용 빨대를 포함한 휴대용 난수 생성기는 비교적 저렴한 비용으로 쉽게 구할 수 있습니다. 또한, 우리 사이의 기술자에게는 대부분의 모바일 플랫폼에서 사용 가능한 이러한 도구에 대한 훌륭한 시뮬레이션이 있습니다.
나는 다른 육류 제품에 대한 대안을 진심으로 추천합니다.
분당 매우 무작위 화되고 대량으로 생성되며 인간이 생성합니까? 일어나지 않을거야
당신이 겪을 주요 문제는
이로 인해 많은 암호 전문가들은 "인-헤드 (in-head)"숫자를 기반으로 패턴을 처리하기가 너무 단순하여 임의의 외부 프로세스를 선호하여 "인-헤드"기술을 포기했습니다.
주제가 아닌 흥미로운
머리에 난수를 생성하는 메커니즘은 아니지만 Neil Stephenson의 Cryptonomicon에 묘사 된 Solitaire 알고리즘 은 암호화 목적으로 난수를 사용하는 것이 얼마나 어려운지를 보여줍니다. 합리적으로 안전한 출력물을 만들기 위해서는 보통의 카드 놀이가 필요하지만, 그 방법은 매우 복잡합니다.
나는 사람들이이 문제에 관해 생각해 낸 것에 대해 정말로 궁금하다.
책상에서 나와 라스 베이거스로 가십시오.
인류는 수십 개의 무작위 화 절차를 가지고 있습니다. 라스 베이거스에서 모두 볼 수 있습니다.
회전하는 원이 있습니다. 텀블링 큐브가 있습니다. 그리고 당신은 토큰을 섞었습니다. 그들은 모두 훌륭하게 작동합니다.
큐브는 아마도 가장 오래된 것입니다. 분명히 한 지점에서 길쭉한 4면 스틱이 사용되었습니다. 양의 대칭 입방 형 너클 본은 수천 년 동안 인기가있었습니다. 우리는 언어를 개발 한시기와 비슷한시기에 이런 종류의 무작위 추출기를 사용해 왔습니다.
http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8
"무작위 숫자를 생성하는 산술적 방법을 고려하는 사람은 물론 죄의 상태에있다"
--- 존 폰 노이만
당신은 당신의 머리에서 할 수있는 LCM을 요구하고 있습니까? 이것이 주사위보다 낫다는 생각은 터무니없이 남아 있습니다.
그러나 이것은 유한하고 명확하며 효과적인 알고리즘만큼 임의적입니다.
http://www.vias.org/simulations/simusoft_lincong.html
http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm
U_ {k + 1} = (a \ times U_k + b) mod (m + 1).
작은 값 a = 5, b = 1 및 m = 7을 선택하면이 작업을 수행하는 것이 더 쉽습니다. 당신은 당신의 머리에 그것을 할 수 있어야합니다.