인간의 뇌를위한 난수 생성 알고리즘? [닫은]


37

인간이 임의의 숫자를 생성 할 수있게하는 실용적이고 배우기 쉬운 "인-헤드 (in-head)"알고리즘을 알고 있거나 고안 했습니까? "인-헤드 (in-head)"는 바람직하게는 외부 도구 또는 장치가없는 것을 의미한다. 또한, 높은 출력 (분당 많은 난수)이 바람직하다.

SO에 이것을 물었지만 많은 관심을 얻지 못했습니다. 아마도 이것은 프로그래머에게 더 적합 할 것입니다.


7
@ S.Lott 나는 그것이 터무니없는 생각하지 않습니다. 실용적이지 않습니까? 물론입니다. 불합리한? 확실히. 그럴지라도 부조리로 인해 새롭고 유용한 생각이 생길 수 있습니다.
biziclop

21
9 .... 9 .... 9 .... 9-무작위가 아니라는 것을 증명할 수 없습니다.

13
S.Lott : 의사 난수 생성기를 계산하기 쉬운 아이디어는 전혀 터무니없는 것이 아닙니다. OP가 여기서 인간의 편견을 피하는 방법을 원한다고 생각합니다 ....
Jens

8
나는 많은 사람들이 무지의 주장에 대해 감사하는 것처럼 보이는 재미 있고 (그리고 동시에 약간 우울합니다). "나는 그것을 상상할 수 없어서 존재할 수 없다", 또는 그 요점을 완전히 놓친 답.
biziclop

4
이 질문은 프로그래밍이 아닌 개인의인지 능력에 관한 것이므로 주제가 아닌 것 같습니다.

답변:


36

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입니다. 산술은 간단합니다. 머리.


이거 정말 좋은데
biziclop

4
이것은 특정 개인의 요구에 문제가되지는 않지만 90 개의 다른 스트림 만 제공합니다.
compman

5
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 오! 씨앗이 없으면 씨앗에 시계를 사용할 수 있기 때문에 <= 60을 유지해야한다고 가정합니다.
eds

4
@eds 음?
79-

1
아마도 @eds는 59를 의미했을 것입니다. 1-58의 모든 숫자는 공정한 게임으로 보입니다.
Erhannis

26

Geomancy에서이 기사를 확인하십시오 . 특히 Geomantic 차트 생성에 관한 섹션 . 여기에는 이진수와 몇 가지 간단한 재귀 계산을 사용하는 의사 난수 생성 기술이 포함됩니다. 머리에서 이것을 쉽게 할 수있는 것처럼 보입니다 (종이가 도움이 될지라도).

면책 조항 : 나는 그것을 직접 시도하지 않았습니다. 충분히 임의의 숫자가 필요할 때의 출력을 얻 거나 편리한 언어로 /dev/random사용 rand하거나 신뢰할 수있는 d20을 굴립니다.

당신이 수학 신동 자라면 , Middle-square 방법 은 눈에 띄게 신뢰할 수없는 방법이라면 상당히 계산적으로 가볍습니다.


3
+1 이것이이 질문에 대한 첫 번째 심각한 답변이라고 생각합니다. 조금 슬프다.
Jens

@ Magnus Wolffelt-Ron Eglash의 TED 강연에서 아프리카의 프랙탈 기하학의 문화적 중요성에 대해 언급 한 것을 기억했습니다. "바 마나 모래 운세". 나는 더 이상 Soothsayers가 필요하지 않기 때문에이 기술을 무엇을 사용할 것인지 전혀 알지 못하지만 상당히 흥미 롭습니다. ted.com/talks/ron_eglash_on_african_fractals.html
Inaimathi

1
내가 알 수있는 한,이 지오 만 틱 방법은 단순히 임의의 근원 인 '개선'( 'debias'가 더 나은 용어라고 생각합니다)을 허용합니다. 재채기를해서는 안되지만 실제로 OP가 찾고있는 것은 아닙니다. 그것은 예쁘지 않다는 말은 아닙니다 ....
Norman Grey

@Norman Grey-인간의 뇌는 기본적으로 편중 된 임의의 숫자를 생각해 낼 수 있습니다.
Inaimathi

@Inaimathi 정확하게 : 그것이 왜 debiasing numbers가 중요한지, 그리고 당신이 지적한 방법이 도움이되는 이유입니다. 아니면 당신을 오해하고 있습니다.
Norman Grey

10

합리적인 생각은 당신이 당신의 두뇌에 저장하는 방대한 양의 언어 정보에 의존해야한다는 것입니다. 소스는 노래 가사,시, Monty Python 스케치 등 무엇이든 될 수 있지만, 마음에 드는 부분이어야합니다.

그런 다음 무의식적 편견을 최대한 제거하면서 상당히 임의의 부분을 선택해야합니다. 예를 들어 노래를 선택하고 k10에서 20 사이 의 숫자 를 선택한 다음 k가사에서 글자 를 찾는 방법이 있습니다.

분명히 글자의 빈도가 다르기 때문에 균일하게 분포되지는 않지만 임의의 글자이지만 적어도 외부 소스가 없으면 가능하다고 생각되는 것과 비슷합니다.

업데이트 : 사람들이 무작위로 동전 던지기 시퀀스를 작성하도록 요청받을 때 가장 일반적인 실수는 시퀀스를 너무 무작위로 만드는 것입니다. 동일한 결과의 실행은 너무 짧아서 간단한 실행 길이입니다. 분석이 드러날 것입니다. 이 방법은 주로이 트랩을 피하기위한 것입니다. 물론이 런 길이 바이어스의 그림자에서 다른 이상 현상이 발생할 수 있지만이를 찾으려면 적절한 실험이 필요합니다. 아이러니하게도, 혼자서 생각함으로써 난수를 생성하는 알고리즘은 혼자서 생각하면 찾을 수 없습니다.


그럼에도 불구하고 나는 당신이 여러 가지 미묘한 방법으로 편향 될 것으로 기대합니다. (IE는 같은 노래 그룹을 선택하는 경향이 있습니다)
Zachary K

@Zachary K 의심의 여지없이 숫자를 골라야합니다. 편견을 없앨 수는 없지만이 방법을 사용하면 어떤 편지를 고를 지 알 수 없습니다 (시간이 지남에 따라 일부는 암기해야 함).
biziclop

우리가 아이로했던 Eini 미니 미니 모에.
Zachary K

2
"10에서 20 사이의 숫자 k를 선택하십시오." 17. 최소 난수.
S.Lott

@ S.Lott이 숫자가 얼마나 임의적인지는 중요하지 않습니다. 필요한 유일한 이유는 처음 몇 글자를 더 쉽게 기억하기 때문입니다.
biziclop

9

시계를 샘플링하십시오.

60 (초)의 임의의 숫자가 필요한 경우이 작업을 수행합니다. 어떤 시간이든 적절한 모듈로를 사용하십시오. 4:17:23 PM, 다이 롤을 시뮬레이션하면 5가됩니다.


그리고 분당 많은 수의?
게리 로우

확실하지 않습니다. 당신은 분을 포함하여 숫자의 풀을 3600로 만든다고 말하는가? 나는 추측하지만 숫자가 클수록 덜 무작위일까요? 빠르게 샘플을 채취 할 수 없었던 것처럼.
마크 Canlas

1
@Gary Rowe이 기준은 폐기되어야합니다. 사용 된 방법에 관계없이 인간의 두뇌는 너무 느리기 때문에 두렵습니다.
biziclop

분당 60 개가 넘는 숫자가 필요한 경우 접근 방식이 어떻게 작동하는지 궁금합니다. 어쨌든 인간의 뇌에 분당 많은 수의 숫자를 생성하도록 요구하는 것이 어쨌든 최대치가 될 것이므로 걱정하지 마십시오.
게리 로우

@biziclop 문제 없습니다. @Mark의 접근 방식으로 상황을 고려하면서 주석 충돌이 발생한 것 같습니다.
게리 로우

5

훌륭한 질문입니다. 나는 좋은 대답이 매우 어려울 수 있다고 두려워합니다.

그러나 처음에는 두 사람이 관여 할 때“진정한”임의성을 생성하는 것이 매우 쉽습니다. 단순히 한 사람이 머리 계수에서 몇 개의 숫자를 조용히 계산하고 다른 사람은 임의의 간격을두고 "정지"라고 말합니다. 나중에이 수는 표준 방법을 사용하여 다른 분포로 변환 할 수 있습니다.

이 방법을 견고하게 만들려면 계수가 너무 크면 안됩니다. 그렇지 않으면 작은 숫자에 대한 강한 편향이 있습니다. 이 방법의 확률 적 특성을 분석하는 작업이 있는지 정말 관심이 있습니다.


계산이 빨리 이루어지는 것이 중요하다고 생각합니다. – 계산하는 사람은 초당 약 1 ~ 2 단계만으로 리듬 적으로 계산하지 않아야합니다. 충분한 엔트로피를 달성하기 위해 모든 수에 상당한 수의주기 (직관적으로 ≥4)가 있어야하기 때문입니다.
Aaron Thoma

더 나은 무작위성에 대한 개선 제안 : 계산하는 사람은 먼저 0에서 모듈러스 사이의 비밀 무작위 씨앗 X₀를 선택합니다. 카운팅과 결합하여, 그것은 최소한의 사고 노력으로도 적절한 무작위성을 제공해야합니다 (카운팅 기간에 비해 느리게 카운팅하는 경우에도; 낮은 사이클 수 – 직관적으로 ≥2 이상; <2는 괜찮습니다).
Aaron Thoma

4

이것은 복잡한 질문입니다. 나는 잡초로 너무 멀리 방황하지 않고 조금 설명하려고 노력할 것이다.

먼저 " 진정한 무작위성이란 무엇입니까?" 그러한 논의는 철학적 물로 빠르게 퇴화되지만, 요점은 "우주가 정말로 무작위 적인가?"입니다. 다시 말해, 시간과 물질을 양자화하면 현재 우주에서 다음 우주 상태를 계산할 수 있습니까? 그렇다면 우주는 결정 론적이며 진정한 무작위성이 없습니다 ( "철학적"에 대한 의미는 무엇입니까?)

"진정한 무작위성"을 정의하기가 어렵 기 때문에 종종 "의사 난 수성"을 결정합니다. 이것은 일반적으로 컴퓨터에서 "무작위"숫자를 생성 할 때 필요합니다.

가장 단순한 의사 난수 생성기는 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 모델 사용). 우리는 이것에 나쁘다.

머리에서 할 수있는 다양한 혼합 기술을 사용하여 상황을 개선 할 수있는 방법이 있습니다. 그리고 왜 당신이 이것을 원할 지에 대한 꿈을 꾸는 응용 프로그램도 있습니다 (정치범은 외부 동맹국에게 메시지를 암호화하고 싶어합니다). 그러나 나는이 게시물이 충분히 길다고 생각합니다. :)


1
비록 실제로 무작위적인 물리적 과정이 존재하는지 여부는 논쟁의 여지가 있지만 (EPR 역설과 관련된 실험이 긍정적 인 대답을 제시하지만), Kolmogorov의 복잡도에 근거하여 무작위 서열의 이론적 정의가 존재한다.
biziclop

3

공구 기반 RNG가 확산되는 이유는 난수 생성을위한 우수한 인-헤드 알고리즘이 아직 개발되지 않았기 때문입니다 .

다행스럽게도 플롭 핑용 코인, 롤링 용 주사위 (다양한 패싯 포함), 피킹 용 카드 및 드로잉 용 빨대를 포함한 휴대용 난수 생성기는 비교적 저렴한 비용으로 쉽게 구할 수 있습니다. 또한, 우리 사이의 기술자에게는 대부분의 모바일 플랫폼에서 사용 가능한 이러한 도구에 대한 훌륭한 시뮬레이션이 있습니다.

나는 다른 육류 제품에 대한 대안을 진심으로 추천합니다.


1
그리고 이러한 물리적 장치는 실제로 예측할 수없는 특성을 가지므로 어떤 의미에서는 최고의 컴퓨터 알고리즘보다 무작위입니다.
오메가 센타 우리

( @OmegaCentauri : 당연히 나는 당신이 한 일을 봅니다!; o) (말장난은 확실하지 않지만 좋아합니다. :)) )
Aaron Thoma

3

분당 매우 무작위 화되고 대량으로 생성되며 인간이 생성합니까? 일어나지 않을거야

당신이 겪을 주요 문제는

  • 사람들은 지루 해져서 패턴이 빨리 생길 것입니다
  • 인간의 뇌는 패턴 인식 / 창조에 전념하는 많은 구조를 가지고 있으므로 그것을 물리쳐야합니다
  • 진정한 난수에는 인간이 피하려고하는 반복이 포함됩니다
  • 인간은 숫자가 좋지 않다

이로 인해 많은 암호 전문가들은 "인-헤드 (in-head)"숫자를 기반으로 패턴을 처리하기가 너무 단순하여 임의의 외부 프로세스를 선호하여 "인-헤드"기술을 포기했습니다.

주제가 아닌 흥미로운

머리에 난수를 생성하는 메커니즘은 아니지만 Neil Stephenson의 Cryptonomicon에 묘사 된 Solitaire 알고리즘 은 암호화 목적으로 난수를 사용하는 것이 얼마나 어려운지를 보여줍니다. 합리적으로 안전한 출력물을 만들기 위해서는 보통의 카드 놀이가 필요하지만, 그 방법은 매우 복잡합니다.


1
나는 이것이 질문에 대답하지 않는다고 생각합니다. 답의 4 점은 사람들이 알고리즘없이 난수를 찾으려고 시도한 경우에만 적용됩니다. 나는 OP가 그것을 알고 있다고 생각하며 이것이 사람들이 머리에서 할 수 있고 좋은 결과를 줄 수있는 알고리즘을 요구하는 이유입니다. 즉, 귀하의 답변에 언급 된 문제를 겪지 마십시오.
FabianB

2

나는 사람들이이 문제에 관해 생각해 낸 것에 대해 정말로 궁금하다.

책상에서 나와 라스 베이거스로 가십시오.

인류는 수십 개의 무작위 화 절차를 가지고 있습니다. 라스 베이거스에서 모두 볼 수 있습니다.

회전하는 원이 있습니다. 텀블링 큐브가 있습니다. 그리고 당신은 토큰을 섞었습니다. 그들은 모두 훌륭하게 작동합니다.

큐브는 아마도 가장 오래된 것입니다. 분명히 한 지점에서 길쭉한 4면 스틱이 사용되었습니다. 양의 대칭 입방 형 너클 본은 수천 년 동안 인기가있었습니다. 우리는 언어를 개발 한시기와 비슷한시기에 이런 종류의 무작위 추출기를 사용해 왔습니다.

http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8

"무작위 숫자를 생성하는 산술적 방법을 고려하는 사람은 물론 죄의 상태에있다"

--- 존 폰 노이만


7
Downvoted-난수 생성을위한 외부 도구가 아니라 메모리 또는 자극에 의존하여 진정한 난수를 생성 할 수있는 인 헤드 알고리즘에 관심이 없습니다.
Magnus Wolffelt

3
당신은 머리에 주사위를 굴릴 수 없습니다
jk.

2
@ jk01 : 맞습니다. 머리도 무작위로 할 수 없습니다.
S.Lott

@ S.Lott-당신이 말하는 것은 "일반적인 인간은 순진한 방법을 사용하고 외부 도구를 사용하지 않고 빠른 속도로 머리에 일정한 숫자를 지속적으로 생성 할 수 없습니다"라고 생각합니다.
Inaimathi

1
@Inaimathi. 아니, 나는 훨씬 더 강한 것을 말하고있다. 당신은 당신의 머리에 무작위로 할 수 없습니다. 뇌는 편견으로 가득 차 있으므로 알고리즘이 필요합니다. 유한하고 효과적인 결정 론적 알고리즘은 랜덤하지 않습니다. 당신은 단순히 그것을 할 수 없습니다. 단순한 알고리즘도 의사 난수도 아니므로 임의의 근사값을 구할 수 없습니다. 주사위는 작고 편리하며 사용 시간이 길고 길다.
S.Lott

1

나는 생각할 수 없다. 실제로 나는 당신이 생각해 낸 모든 것이 너무 많은 편견을 가지고 가치가 없을 것으로 기대합니다.

임의의 숫자가 필요한 경우 일반적으로 주사위를 굴립니다.


0

당신은 당신의 머리에서 할 수있는 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을 선택하면이 작업을 수행하는 것이 더 쉽습니다. 당신은 당신의 머리에 그것을 할 수 있어야합니다.


(LCG) ( linear congruential generator (LCG) ) 의 무작위 버전이 있는지 궁금합니다 . a = 1은 이상적으로 a = 2 초 이상적입니다. (다음 의견에서 지금까지 이것에 대한 나의 생각.)
Aaron Thoma

(( 나는 a = 1, b 소수, b는 똑똑하게 선택, 더 큰 m에 대해 더 적합한 대안이 될 수 있다고 생각했지만 여전히 잘 작동 할 것입니다.) 아마 사실이 아니라는 것을 알았습니다. b throughm / 2가 답이라고 생각했지만, 두 위치에서 번갈아 가면서 순차적 일 수도 있습니다 (작은 | b–m / 2 | / m). b≈m / 3, 3 개의 위치에서 번갈아 가며 순차적 일 수 있습니다; b≈m / 99의 경우 문제는 더 이상 대체 형태가 아니지만 한 모듈로 빼기를 순환하는 데 ~ 99 단계가 필요합니다. ))
Aaron Thoma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.