Kumarbazın haksızlığı, yanlışlıkla meydana gelen olayların gelecekte daha az gerçekleşmesi muhtemel olacağını ve bir süre içinde gerçekleşmemiş olayların yakında gerçekleşmesi daha muhtemel olacağını düşündüğümüz bilişsel bir önyargıdır. Görevin bunun belirli bir versiyonunu uygulamak.
Zorluk Açıklaması
Dahil 1 ile 6 arasında rasgele bir tamsayı döndüren bir işlev yazın. Yakalama: işlev ilk çalıştırıldığında, sonuç tekdüze olmalıdır (% 1 içinde), ancak sonraki her çağrı daha önce birkaç kez yuvarlanan değerler lehine eğrilecektir. Özel detaylar aşağıdaki gibidir:
- Kalıp, şu ana kadar üretilen sayıların sayısını hatırlar.
- Her sonuç aşağıdaki formüle göre ağırlıklandırılır:
- Örneğin, rulo şu ana kadar sayıyorsa , ağırlıklar , yani daha fazla yuvarlama olasılığı 4 kat fazla .
- Formülün, rulo sonuçlarının aynı ağırlıkta olduğu anlamına geldiğini unutmayın.
Kurallar ve Varsayımlar
- Standart G / Ç kuralları ve yasaklı boşluklar geçerlidir
- Kalıp ruloları deterministik olmamalıdır. (yani, tipik olarak bir yapı olarak mevcut olduğu gibi, uçucu bir kaynaktan tohumlanmış bir PRNG kullanın.)
- Rastgele kaynağınız en az 65535 dönem olmalıdır veya gerçek rastgelelik olmalıdır.
- 255'e kadar olan ağırlıklar için dağılımlar% 1 dahilinde olmalıdır
- 16-bit RNG'ler, yukarıdaki gereklilikleri karşılayacak kadar iyidir. Çoğu yerleşik RNG'ler yeterlidir.
- Bu dağıtımın çağrı tarafından mutasyona uğradığı veya post-roll dağılımı kalıp rulosunun yanına getirildiği sürece mevcut dağıtımdan geçebilirsiniz. Dağıtım / sayıları güncellemek bu zorluğun bir parçasıdır .
- Sayma yerine ağırlıkları kullanabilirsiniz. Bunu yaparken, ağırlık 0'a düştüğünde, depolama sayılarıyla aynı etkiyi elde etmek için tüm ağırlıkların 1 oranında artması gerekir.
- Bu ağırlıkları bir dizideki öğelerin tekrarları olarak kullanabilirsiniz.
İyi şanslar. Baytlar sizin lehinize olsun.