Her bir k tarafının, onu döndürdüğümde gelme olasılığına sahip olduğu n taraflı bir yükleme kalıbına sahip olduğumu varsayalım. Bu bilgiyi statik olarak saklamak için iyi bir algoritma varsa (örn. Sabit bir olasılık kümesi için), kalıbın rasgele bir sırasını etkili bir şekilde simüle edebilmem için merak ediyorum.Yüklenen zar için veri yapısı?
Şu anda bu sorun için bir O (lg n) çözümüm var. Buradaki amaç, tüm k için ilk k taraflarının kümülatif olasılığını içeren bir tabloyu saklamak, [0, 1] aralığında rastgele bir gerçek sayı oluşturmak ve kümülatif olan en büyük endeksi elde etmek için tablo üzerinde bir ikili arama yapmaktır. Değer seçilen değerden daha büyük değildir. Bu çözümü tercih etmekteyim, ancak çalışma zamanının olasılıkları hesaba katmaması garip görünüyor. Özellikle, bir tarafın aşırı uç durumlarında veya her zaman eşit olarak dağılmış olan durumlarda, çözümümün hala birçok adımda logaritmik olarak alınmasına rağmen, O (1) 'deki rulo sonucunu saf bir yaklaşımla üretmek mümkündür.
Bu sorunun, bir şekilde çalışma zamanında "uyarlanabilir" olacak şekilde nasıl çözüleceği konusunda herhangi bir önerisi var mı?
DÜZENLEME: Bu sorunun yanıtları dayanarak, onların analizleri ile birlikte an article describing many approaches to this problem kadar yazdım. Vose'un takma adının uygulanması, Θ (n) ön işleme süresini ve her bir rulo rulosunda O (1) zamanını gerçekten etkileyici bir şekilde vermektedir. Umarım bu cevaplarda yer alan bilgilere faydalı bir katkıdır!
_each özel case_ için bir O (1) çözüm bulunması mantıklı. – Tim