Dynamic generation of discrete random variates

Yossi Matias*, Jeffrey Scott Vitter, Wen Chun Ni

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review


We present and analyze efficient new algorithms for generating a random variate distributed according to a dynamically changing set of N weights. The base version of each algorithm generates the discrete random variate in O(log* N) expected time and updates a weight in O(2log* N) expected time in the worst case. We then show how to reduce the update time to O(log* N) amortized expected time. We finally show how to apply our techniques to a lookup-table technique in order to obtain expected constant time in the worst case for generation and update. We give parallel algorithms for parallel generation and update having optimal processor-time product. Besides the usual application in computer simulation, our method can be used to perform constant-time prediction in prefetching applications. We also apply our techniques to obtain an efficient dynamic algorithm for maintaining an approximate heap of N elements, in which each query is required to return an element whose value is within an ε multiplicative factor of the maximal element value. For ε = 1/polylog(N), each query, insertion, or deletion takes O(log log log N) time.

Original languageEnglish
Pages (from-to)329-358
Number of pages30
JournalTheory of Computing Systems
Issue number4
StatePublished - 2003


Dive into the research topics of 'Dynamic generation of discrete random variates'. Together they form a unique fingerprint.

Cite this