Algoritma pembuatan angka acak untuk otak manusia? [Tutup]

37

Apakah Anda menyadari, atau sudahkah Anda menyusun, algoritma "in-head" praktis dan mudah dipelajari yang memungkinkan manusia menghasilkan angka acak (agak "benar")? Maksudnya "in-head" maksud saya .. lebih disukai tanpa alat atau perangkat eksternal. Juga, output tinggi (banyak angka acak per menit) diinginkan.

Meminta ini pada SO tetapi tidak menarik banyak. Mungkin ini lebih cocok untuk programmer.

Magnus Wolffelt
sumber
7
@ S.Banyaknya saya tidak berpikir itu tidak masuk akal sama sekali. Tidak praktis? Tentu saja. Konyol? Tentu tidak. Dan bahkan jika itu terjadi, absurditas dapat membuka jalan bagi pemikiran baru yang bermanfaat.
biziclop
21
9 .... 9 .... 9 .... 9 - Anda tidak dapat membuktikan itu tidak acak.
13
S.Lott: Gagasan easzy untuk menghitung generator nomor pseudo-acak sama sekali tidak masuk akal. Saya pikir OP menginginkan cara untuk menghindari bias manusia di sini ....
Jens
8
Saya merasa lucu (dan pada saat yang sama sedikit tertekan) betapa banyak orang tampaknya menghargai argumen ketidaktahuan. "Aku tidak bisa membayangkannya, karena itu tidak ada", atau jawaban yang benar-benar tidak penting.
biziclop
4
Pertanyaan ini tampaknya di luar topik karena ini tentang kemampuan kognitif seorang individu dan bukan pemrograman.

Jawaban:

36

Berikut ini adalah algoritma dari George Marsaglia :

Pilih nomor 2 digit, katakan 23, "benih" Anda.

Bentuk angka 2 digit yang baru: angka 10 ditambah 6 kali angka satuan.

Urutan contohnya adalah 23 -> 20 -> 02 -> 12 -> 13 -> 19 -> 55 -> 35 -> ...

dan periodenya adalah urutan pengali, 6, dalam kelompok residu yang relatif prima terhadap modulus, 10. (59 dalam kasus ini).

"Digit acak" adalah satuan digit angka 2-digit, yaitu, 3,0,2,2,3,9,5, ... urutan mod 10. Aritmatika cukup sederhana untuk dilakukan di kepala.

Davo
sumber
Kedengarannya sangat bagus.
biziclop
4
Ini mungkin bukan masalah untuk kebutuhan orang tertentu, tetapi ini hanya memberi Anda 90 aliran berbeda.
compman
5
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, oh, ya ampun! Saya berasumsi Anda seharusnya tetap <= 60, yang bekerja dengan baik karena Anda dapat menggunakan jam untuk seed jika Anda tidak memilikinya.
eds
4
@ Tidur, apa? 79 -> 61 -> 15 -> ...
Izkata
1
Mungkin @eds berarti 59. Semua angka dari 1-58 tampak seperti permainan yang adil.
Erhannis
26

Lihat artikel ini di Geomancy . Khususnya bagian tentang menghasilkan grafik Geomantic . Ini melibatkan teknik menghasilkan angka pseudo-acak menggunakan digit biner dan beberapa perhitungan rekursif sederhana. Sepertinya Anda bisa melakukan ini dengan mudah di kepala Anda (meskipun selembar kertas akan membantu).

Penafian: Saya belum mencobanya sendiri; ketika saya membutuhkan angka acak yang cukup, saya juga mendapatkan beberapa output dari/dev/random , digunakan randdalam bahasa apa pun yang saya miliki, atau roll d20 terpercaya saya.

Jika Anda seorang ahli matematika, metode Middle-square adalah komputasi yang cukup ringan, jika metode yang tidak dapat diandalkan.

Inaimathi
sumber
3
+1 Saya pikir ini adalah jawaban serius pertama untuk pertanyaan ini. Sedikit sedih.
Jens
@Magnus Wolffelt - Saya ingat itu disebutkan dalam ceramah TED oleh Ron Eglash tentang signifikansi budaya geometri fraktal di Afrika; "Ramalan Pasir Bamana". Ini cukup menarik, meskipun saya masih tidak tahu apa yang akan Anda gunakan teknik ini untuk sekarang karena kita tidak lagi membutuhkan peramal. ted.com/talks/ron_eglash_on_african_fractals.html
Inaimathi
1
Sejauh yang saya bisa lihat, metode geomantic hanya memungkinkan Anda untuk 'meningkatkan' (saya kira 'debias' akan menjadi istilah yang lebih baik) sumber keacakan. Tidak boleh bersin, tetapi tidak benar-benar apa yang dicari OP. Yang tidak berarti itu tidak cantik ....
Norman Gray
@Norman Grey - Otak manusia dapat menampilkan angka arbitrer yang bias secara default.
Inaimathi
@Inaimathi Tepatnya: itu sebabnya nomor debiasing menjadi penting, dan mengapa metode yang Anda tunjuk sangat membantu. Atau saya salah paham dengan Anda.
Norman Gray
10

Saya pikir asumsi yang masuk akal adalah bahwa Anda harus mengandalkan sejumlah besar informasi verbal yang Anda simpan di otak Anda. Sumbernya bisa apa saja, lirik lagu, puisi, sketsa Monty Python, tapi itu pasti sesuatu yang Anda tahu dengan hati.

Maka Anda harus memilih bagian yang cukup acak untuk menghilangkan bias tidak sadar sebanyak mungkin. Cara untuk melakukan ini misalnya akan memilih lagu, memilih nomor kantara 10 dan 20 dan kemudian menemukank huruf ke dalam liriknya.

Jelas ini tidak akan memberikan Anda distribusi yang seragam, karena frekuensinya berbeda, tetapi ini adalah huruf acak, atau setidaknya sedekat yang saya percaya mungkin terjadi tanpa sumber eksternal.

Pembaruan: Ngomong-ngomong, ketika orang diminta untuk menulis urutan acak lempar koin katakan, kesalahan yang paling umum sejauh ini adalah membuat urutan Anda "terlalu acak": menjalankan hasil yang identik akan terlalu pendek, yang panjang lari sederhana analisis akan mengungkapkan. Metode ini terutama ditujukan untuk menghindari jebakan ini. Tentu saja anomali lain mungkin muncul dari bayangan bias panjang run ini, tetapi Anda perlu eksperimen yang tepat untuk menemukannya. Agak ironisnya, suatu algoritma untuk menghasilkan angka acak dengan berpikir saja tidak dapat ditemukan dengan berpikir sendiri.

biziclop
sumber
Bahkan kemudian saya akan berharap bahwa Anda akan menjadi bias dalam sejumlah cara halus. (Yaitu cenderung memilih kelompok lagu yang sama)
Zachary K
@ Zakaria K Tanpa ragu, tetapi Anda juga harus memilih nomor, yang menyebarkannya sedikit. Meskipun bias tidak pernah bisa dihilangkan, metode ini hampir pasti mencegah Anda mengetahui huruf mana yang akan Anda pilih (walaupun seiring waktu Anda harus menghafal sebagian).
biziclop
Eini mini miny moe, seperti yang biasa kami lakukan saat kecil.
Zachary K
2
"pilih angka k antara 10 dan 20". 17. Nomor paling tidak acak.
S.Lott
@ S.Lott Tidak peduli seberapa acak nomor ini. Satu-satunya alasan Anda membutuhkannya adalah karena Anda cenderung mengingat beberapa huruf pertama dari berbagai hal dengan lebih mudah.
biziclop
9

Cicipi arloji Anda.

Saya melakukan ini jika saya memerlukan angka acak yang merupakan faktor 60 (detik). Ambil modulo yang sesuai kapan pun waktunya. 4:17:23 PM, mensimulasikan die roll, menjadi 5.

Mark Canlas
sumber
Dan untuk sejumlah besar per menit?
Gary Rowe
Tidak yakin saya ikuti. Anda mengatakan membuat kumpulan angka 3600 dengan memasukkan menit? Saya kira, tetapi semakin besar angkanya semakin acak? Seperti Anda tidak bisa dengan cepat mengambil sampel dengan mudah.
Mark Canlas
1
@Gary Rowe Kriteria ini harus dihapus, saya khawatir, hanya karena terlepas dari metode yang digunakan, otak manusia terlalu lambat.
biziclop
Maaf, saya hanya ingin tahu bagaimana pendekatan Anda bekerja jika Anda membutuhkan lebih dari 60 angka per menit. Kalau dipikir-pikir, meminta otak manusia untuk menghasilkan angka sebanyak itu per menit akan tetap maksimal, jadi jangan khawatir.
Gary Rowe
@biziclop Tidak ada masalah. Sepertinya saya memiliki tabrakan komentar sambil mempertimbangkan situasi dengan pendekatan @ Mark.
Gary Rowe
5

Pertanyaan yang sangat bagus Saya khawatir jawaban yang baik terbukti sangat sulit.

Tetapi sebagai permulaan, cukup mudah untuk menghasilkan keacakan "benar" ketika dua orang terlibat: cukup biarkan salah satu orang menghitung diam-diam dalam modulus kepala mereka beberapa angka, dan yang lain mengatakan "berhenti" setelah interval sewenang-wenang. Setelah itu, angka ini dapat diubah menjadi distribusi lain menggunakan metode standar.

Untuk membuat metode ini kuat, modulus tidak boleh terlalu besar, jika tidak, akan ada bias yang kuat terhadap jumlah kecil. Saya benar-benar tertarik untuk melihat apakah ada pekerjaan menganalisis sifat stokastik dari metode ini.

Konrad Rudolph
sumber
Sangat penting menghitung dilakukan dengan cepat, saya pikir - orang yang menghitung harus berhati-hati untuk tidak menghitung secara berirama, hanya sekitar 1 atau 2 langkah per detik. Karena harus ada sejumlah besar siklus (secara intuitif ≥4) melalui semua angka untuk mencapai entropi yang cukup.
Aaron Thoma
Saran peningkatan untuk keacakan yang lebih baik : Orang yang menghitung memilih benih acak rahasia X₀ antara 0 dan modulus terlebih dahulu; dalam kombinasi dengan penghitungan, yang seharusnya memberikan keacakan yang layak pada upaya berpikir yang masih minim (bahkan ketika menghitung dengan lambat, relatif terhadap durasi penghitungan; yaitu jumlah siklus yang rendah - secara intuitif ≥2 akan baik-baik saja; <2 akan baik-baik saja).
Aaron Thoma
4

Ini adalah pertanyaan yang rumit; Saya akan mencoba menjelaskan sedikit tanpa berkeliaran terlalu jauh ke dalam gulma.

Pertama, kita harus bertanya "apa itu keacakan yang benar "? Diskusi semacam itu dengan cepat berubah menjadi perairan filosofis, tetapi intinya adalah ini: "apakah alam semesta benar - benar acak"? Dengan kata lain, jika Anda menghitung waktu dan materi, dapatkah Anda menghitung kondisi alam semesta selanjutnya dari yang sekarang? Jika ya, maka alam semesta adalah deterministik dan tidak ada keacakan yang sebenarnya (lihat apa yang saya maksud tentang "filosofis"?)

Karena "keacakan yang sebenarnya" sulit untuk didefinisikan, kita sering puas dengan "pseudorandomness." Ini umumnya diperlukan saat membuat angka "acak" di komputer, tentu saja.

Generator nomor pseudorandom paling sederhana akan menjadi sesuatu seperti algoritma terkenal Dilbert's "9 .. 9 .. 9 ..". Tapi secara naluriah itu tampaknya tidak terlalu baik (yang tentu saja merupakan lelucon). Para ahli statistik telah mengembangkan serangkaian tes untuk mengatakan apakah suatu urutan hasil yang konon acak adalah "baik". Mulailah dengan halaman wikipedia untuk "uji kuadrat chi" dan Anda bisa menghabiskan sore hanya membaca tentang tes ini.

Algoritme komputer sederhana seperti "generator kongruensial linier" menghasilkan angka yang cukup baik untuk uji chi-squared (Anda masih perlu "menyemai" algoritme ini dari sesuatu, namun).

Langkah selanjutnya dalam "kebaikan" adalah "keacakan kuat kriptografis" yang berarti bahwa diberi urutan a1, a2, ... Anda tidak dapat memprediksi angka berikutnya dalam urutan dengan "probabilitas masuk akal" kecuali jika Anda menggunakan banyak perhitungan. Angka-angka ini kadang-kadang disebut "pseudorandom secara komputasi." Salah satu cara umum untuk mendapatkan urutan seperti itu adalah melalui "rantai hash" seperti ini: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Karena kami percaya (berdasarkan pengalaman, bukan bukti matematika) bahwa SHA512 adalah komputasi sulit untuk dibalik, kami percaya bahwa a2 adalah "mustahil" untuk diprediksi hanya dengan a1.

Jadi sekarang muncul pertanyaan, apa hal terbaik yang dapat dilakukan manusia berdasarkan aturan yang ditetapkan dalam pertanyaan Anda? Manusia terkenal buruk dalam menghasilkan keacakan; dulu ada situs web yang akan Anda coba untuk menghasilkan koin membalik dengan "secara acak" mengetik H, T, T, H, H, T, T, dll, seolah-olah Anda membalik koin (tetapi Anda melakukannya di kepalamu). Setelah beberapa saat, situs web akan mulai memprediksi flips Anda lebih baik dari 50% dari waktu (menggunakan Model Markov Tersembunyi). Kami hanya buruk dalam hal ini.

Ada beberapa cara untuk memperbaiki situasi dengan menggunakan berbagai teknik pencampuran yang mungkin bisa dilakukan di kepala Anda. Dan bahkan ada aplikasi yang bisa saya impikan untuk mengapa Anda menginginkan ini (tahanan politik ingin mengenkripsi pesan ke sekutu luar). Tapi saya rasa posting ini cukup panjang. :)

Fixee
sumber
1
Meskipun apakah proses fisik yang benar-benar acak ada, masih terbuka untuk diperdebatkan (meskipun eksperimen yang melibatkan paradoks EPR menyarankan jawaban positif), definisi teoritis dari urutan acak memang ada, berdasarkan pada kompleksitas Kolmogorov.
biziclop
3

Alasan utama proliferasi RNG berbasis alat adalah bahwa algoritma in-head yang baik untuk pembuatan angka acak belum dikembangkan .

Untungnya generator nomor acak portabel - termasuk koin untuk menjatuhkan, dadu (dengan berbagai jumlah sisi) untuk penggulungan, kartu untuk memetik dan sedotan untuk menggambar - relatif mudah diperoleh dengan biaya rendah. Selain itu, untuk para teknofil di antara kami, ada beberapa simulasi alat yang cukup bagus yang tersedia untuk sebagian besar platform seluler.

Saya sungguh-sungguh merekomendasikan semua ini di atas segala alternatif daging-ware.

Kramii Reinstate Monica
sumber
1
Dan perangkat fisik ini benar-benar memiliki sifat yang tidak dapat diprediksi, sehingga dalam arti mereka lebih acak daripada algoithme komputer terbaik.
Omega Centauri
( @OmegaCentauri: Secara alami saya melihat apa yang Anda lakukan di sana!; O) (Tidak yakin pelesetan itu dimaksudkan, tetapi saya menyukainya. :)) )
Aaron Thoma
3

Sangat acak, jumlah besar per menit dan dihasilkan oleh manusia? Tidak akan terjadi

Masalah utama yang akan Anda hadapi adalah

  • Orang bosan dengan cepat sehingga pola akan terjadi dengan cepat
  • Otak manusia memiliki banyak struktur yang dikhususkan untuk pengenalan pola / penciptaan sehingga Anda harus mengalahkannya
  • Bilangan yang benar-benar acak mengandung pengulangan yang coba dihindari manusia
  • Manusia tidak bagus dalam jumlah besar

Ini menyebabkan banyak cryptographers untuk meninggalkan teknik "in-head" yang mendukung proses eksternal yang acak karena terlalu sederhana untuk mengerjakan pola berdasarkan angka "in-head".

Di luar topik tetapi menarik

Meskipun ini bukan mekanisme untuk menghasilkan angka acak di kepala Anda, algoritma Solitaire (seperti yang digambarkan dalam Cryptonomicon Neal Stephenson ) menunjukkan betapa sulitnya menggunakan angka acak untuk keperluan kriptografi. Ini hanya membutuhkan satu pak kartu remi biasa untuk membuat output yang cukup aman tetapi metode yang harus dilakukan cukup rumit.

Gary Rowe
sumber
1
Saya pikir ini tidak menjawab pertanyaan. 4 poin jawaban Anda hanya berlaku jika orang mencoba menemukan angka acak tanpa algoritma. Saya pikir OP menyadari hal itu dan ini adalah alasan mengapa ia meminta algoritma yang dapat dilakukan orang di kepala mereka dan memberikan hasil yang baik, yaitu jangan menderita masalah yang disebutkan dalam jawaban Anda.
FabianB
2

Saya benar-benar ingin tahu tentang apa pun yang mungkin muncul tentang masalah ini.

Silakan menjauh dari meja dan pergi ke Las Vegas.

Umat ​​manusia memiliki lusinan prosedur pengacakan. Anda dapat melihat semuanya di Las Vegas.

Anda memiliki lingkaran berputar. Anda memiliki kubus jatuh. Dan Anda telah mengacak token. Mereka semua bekerja dengan sangat baik.

Kubus mungkin yang tertua. Rupanya ada tongkat memanjang 4 sisi yang digunakan pada satu titik. Buku-buku jari kubik simetris domba populer selama ribuan tahun. Kami telah menggunakan jenis pengacak tersebut sejak - mungkin - sekitar waktu yang sama ketika kami mengembangkan bahasa.

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

"Siapa pun yang menganggap metode aritmatika menghasilkan angka acak, tentu saja, dalam keadaan berdosa"

--- John von Neumann

S.Lott
sumber
7
Downvoted - Saya tidak tertarik pada alat eksternal untuk menghasilkan angka acak, melainkan algoritma in-head yang dapat mengandalkan ingatan atau stimulus untuk menghasilkan angka yang benar-benar acak.
Magnus Wolffelt
3
Anda tidak dapat melempar dadu di kepala Anda
jk.
2
@ jk01: Benar. Anda juga tidak bisa melakukan hal acak di kepala Anda.
S.Lott
@ S.Lott - Saya pikir apa yang Anda maksud adalah "Manusia tipikal tidak dapat menghasilkan angka acak secara acak di kepala mereka dengan kecepatan tinggi menggunakan metode naif dan tidak ada alat eksternal".
Inaimathi
1
@Inaimathi. Tidak, saya mengatakan sesuatu yang jauh lebih kuat. Anda tidak dapat melakukan secara acak di kepala Anda. Otak Anda penuh dengan bias, jadi Anda perlu algoritma. Tidak ada algoritma yang terbatas, efektif, deterministik yang acak. Anda tidak bisa melakukannya. Tidak ada algoritma yang cukup sederhana bahkan pseudo-acak, sehingga Anda tidak dapat memperkirakan secara acak. Dadu kecil, praktis dan memiliki sejarah penggunaan yang sangat panjang.
S.Lott
1

Saya tidak bisa memikirkan apa pun. Sebenarnya saya akan berharap bahwa apa pun yang Anda hasilkan akan memiliki begitu banyak bias di dalamnya sehingga tidak berharga.

Jika saya perlu nomor acak saya biasanya melempar dadu.

Zachary K
sumber
0

Apakah Anda meminta LCM yang dapat Anda lakukan di kepala Anda? Perhatikan bahwa gagasan bahwa ini lebih baik daripada dadu tetap tidak masuk akal.

Namun, ini acak seperti algoritma apa pun yang terbatas, pasti dan efektif.

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 \ kali U_k + b) mod (m + 1).

Lebih mudah untuk melihat apa yang dilakukan jika kita memilih nilai kecil a = 5, b = 1, dan m = 7. Anda harus bisa melakukan itu di kepala Anda.

S.Lott
sumber
Saya ingin tahu apakah ada versi acak yang layak dari ini ( generator kongruensial linier (LCG) ), yang benar-benar mudah dilakukan di kepala seseorang? a = 1 idealnya, a = 2 detik-idealnya. (Pikiranku sejauh ini tentang hal ini dalam komentar berikutnya.)
Aaron Thoma
(( . Saya pikir a = 1, b prima, b cerdik dipilih, bisa menjadi alternatif yang lebih layak untuk m lebih besar ini, yang masih akan bekerja dengan baik Lalu aku melihat itu mungkin tidak benar: Untuk b≈0 atau b≈m, itu akan melintasi agak berurutan melalui angka-angka, jadi saya pikir b≈m / 2 adalah jawabannya, tetapi kemudian saya perhatikan, itu juga bisa berurutan (untuk kecil | b – m / 2 | / m), hanya di dua posisi secara bergantian. b≈m / 3, bisa berurutan, berganti-ganti di antara 3 posisi; untuk b /m / 99 masalahnya tidak akan berada dalam bentuk bolak-balik lagi, tetapi akan membutuhkan ~ 99 langkah untuk berputar melalui satu pengurangan modulo. ))
Aaron Thoma