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.
self-improvement
algorithms
random
Magnus Wolffelt
sumber
sumber
Jawaban:
Berikut ini adalah algoritma dari George Marsaglia :
sumber
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
, digunakanrand
dalam 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.
sumber
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
k
antara 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.
sumber
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.
sumber
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.
sumber
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. :)
sumber
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.
sumber
Sangat acak, jumlah besar per menit dan dihasilkan oleh manusia? Tidak akan terjadi
Masalah utama yang akan Anda hadapi adalah
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.
sumber
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
sumber
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.
sumber
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.
sumber