İçbükey tapınaktan Xiaocha
Qubit Üretildi | Genel Hesap QbitAI
İnsanlar 1-10 arasında rastgele bir tamsayı söylesinler (1 ve 10 dahil) Her sayının seçilme olasılığı% 10 mu? Cevap elbette hayır.
Yarım yıl önce, birisi 8500 öğrenciyle bir anket yaptı ve insanların 7 için özel bir tercihi var gibi göründüğünü ve insanların yaklaşık% 30'unun "7" yi seçeceğini ve her iki uçtaki sayıları seçme olasılığının düşük olacağını buldu. 10 "insanlar sadece% 1.9.
Bir bilgisayar kullanırsak, neredeyse tamamen rastgele sayılar oluşturabiliriz ve seçilen her sayının olasılığının% 10 olmasını sağlayabiliriz. (Not: Aslında, bilgisayar tamamen rasgele değil, sözde rasgele sayılar üretir, ancak etki insanlardan çok daha iyidir.)
Görünüşte süper basit olan bu şeyde, insan beyni bilgisayara kaybetti. İnsan rastgele işlevi Human.random, Numpy'de np.random'dan çok daha azdır.
Bazı Twitter netizenlerinin alay etmesine şaşmamalı: Homo sapiens bu sorunu doğumundan bu yana 300.000 yıldan fazla bir süredir çözememiştir.
İnsanların duyguları olduğu için: 1 ve 10 iki uçta yer alıyor, bu iki sayıyı seçmek çok mu planlı? 7 uğurlu sayım mı? Bilinçaltı düşünceler nihai seçiminizi belirleyecektir.
Peki şimdi ne yapmalıyım?
Bir insan rastgele fonksiyonunu gerçek bir rastgele fonksiyona nasıl dönüştürebiliriz? Yapmamız gereken, olasılık dağılımı% 10'dan büyük olan sayıları, olasılığı% 10'dan az olan sayılara taşımaktır.
Bu uzun şeritleri kestiğinizi ve hepsini aynı yükseklikte olacak şekilde yeniden düzenlediğinizi hayal edebilirsiniz:
Uç bir örnek vermek gerekirse, her bir şeridi sonsuz küçük parçalara "kestiğimizi" ve sonra bu parçaları herhangi bir şeklin olasılık dağılımını oluşturmak için Lego gibi kullanabiliriz.
Şimdi böyle bir değişken tanımlayalım x ben, j Sayıları koyduğumuz anlamına gelir ben Numaraya ayarlandı j Numunenin toplam i numaralı numunedeki oranı.
7'yi seçen daha fazla insan olduğu için, 7. bölümü 1'e ayarlamayı umuyoruz. 7'nin% 20'si 1 olursa, x7,1 = 0.2. xi, kendiliğinden ayarlanmayan kısmı temsil eder.
Son olarak, tüm rastgele sayıların olasılığının 0,1 olduğunu umuyoruz, bu nedenle j'ye ayarlanmış diğer sayıların oranlarının toplamı şu şekilde olmalıdır:
Aynı zamanda, orijinal dağılımdaki tüm olasılık kütlelerinin korunmasını da sağlamalıyız. Dolayısıyla, 1'den 10'a ayarlanan her bir i'nin toplam olasılığı 1'e eşit olmalıdır (Not: orijinal metin, seçilen orijinal i sayısının Pi olasılığına eşit olmalıdır).
Ek olarak, orijinal dağılımı olabildiğince korumak istiyoruz, yani xi, i toplamını (sabit kalan kısımlar), yani ayarlanmayan birçok parça kadar maksimize etmek istiyoruz.
Şimdi bu soru bir Doğrusal programlama Bu 20 kısıtlama altındaki problem, köşegen elemanların toplamını en büyüğü yapar.
Bilgisayar hesaplamasından sonra, ayarlama planı şuna benzer:
Bu sonuç sezgisel olsa da yeterince kesin olmasa da, doğru ayarlama oranı:
Yukarıdaki tabloya göre, 7'yi seçmenin sonucunun% 28'inin 10'a ayarlanması, sonucun% 20'sinin 1'e ayarlanması gerekiyor vb.
Ancak% 28 ve% 20 oranlarının nasıl elde edileceği, ilk rastgele dağılım tablosu kullanılabilir.
Başlangıçta, insanların% 28'i 7'yi seçti. 7 alırsak, ikinci kişiye soruyoruz, eğer biz de 7 alırsak, ilk 7'yi 1'e zorlayacağız.
İnsan beyni rastgele sayı üreteci
Artık insan rastgele sayı üretecinin çalışma prensibini anladınız, aşağıdaki "bu programın kaynak kodu
Bu prosedüre göre, 8,500 kişinin olması koşuluyla, 1'den 10'a kadar ortalamaya yakın bir rasgele sayı üreteci alabilmelisiniz.
Yukarıdaki algoritmanın fikri, kodu ve kaynak kodu blogdan alınmıştır:
https://torvaney.github.io/projects/human-rng