Hileli zar için veri yapısı?
Her tarafı k bazı olasılık p olduğu n-taraflı yüklü die bir ben olduğunu varsayalım
Şimdilik bu sorun için(lg n) bir çözüm buldum. Fikir saklamak için bir tablo kümülatif olasılık ilk k taraf için de tüm k, onları oluşturmak için rastgele gerçek sayı aralığı [0, 1) ve gerçekleştirmek bir ikili arama masanın üstünden almak en büyük dizini olan toplu değer hayır daha büyük seçilmiş değer. Ben daha çok bu çözüm gibi, ama zamanı dikkate olasılıklar almaz tuhaf görünüyor. Özellikle, extremal durumlarda her zaman bir Taraf olacaklara değerleri olmak birörnek dağıtılmış, mümkün oluşturmak için sonucun rulo O(1) kullanarak saf bir yaklaşım, ama eğer bir çözüm olacak hala al logarithmicallh pek çok adım.
Herkes bir şekilde bu sorunu çözmek için nasıl herhangi bir öneriniz var bir şekilde "o" zamanı mı? Uyumlu mu
EDİTBu sorunun cevabına göre, Yukarı yazdıman article describing many approaches to this problemonların analizleri ile birlikte. Diğer bir yöntem verir ve Teta Vose uygulanması;(n) önişleme zaman ve gerçekten etkileyici olan ölmek rulo başına O(1) zaman, gibi görünüyor. Umarım bu bilgiler cevapları içerdiği için yararlı bir ektir!
CEVAP
Bir sağlar alias method arıyoruzO(1)sabit kesikli olasılık dağılımı (sabit zaman uzunluğu n bir dizi giriş erişebilirsiniz varsayarak) bir zaman O(n) ile oluşturmak için yöntem. Luc Devroye "Non-Uniform Random Variate Generation" chapter 3 (PDF) belgelenmiş bulabilirsiniz.
Fikri olasılıklar p dizinizi almaktır
0 ve 1 arasında rastgele sayılar, r ve s, üreterek, 1 ile n arasında rasgele bir sayı üretiyoruz. (R*N) i = 1 Kat edelim. S
En iyi Anahtar Değeri için uygulama Ve...
Eksik harfli kelimeleri ararken için i...
Bu veri yapısı "zorlayıcı" i...
Nasıl veri yapısı okumak için .NSArray...
R veri yapısı SSS biçimlendirme için...