[ 
https://issues.apache.org/jira/browse/MATH-1220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14513221#comment-14513221
 ] 

Otmar Ertl commented on MATH-1220:
----------------------------------

The patch overrides the sample() method for ZipfDistribution by an 
implementation that uses rejection sampling. To demonstrate the speed of the 
new method the (ignored) unit test testPerformance() can be used. Using the 
default sample() method from AbstractIntegerDistribution instead, the test will 
not finish in reasonable time. The generation of a single random value consumes 
at most 2 uniformly distributed random numbers on average, dependent on the 
parameters of the Zipf distribution (see the output of testPerformance()).

> More efficient sample() method for ZipfDistribution
> ---------------------------------------------------
>
>                 Key: MATH-1220
>                 URL: https://issues.apache.org/jira/browse/MATH-1220
>             Project: Commons Math
>          Issue Type: Improvement
>            Reporter: Otmar Ertl
>         Attachments: patch_v1
>
>
> Currently, sampling from a ZipfDistribution is very inefficient. Random 
> values are generated by inverting the CDF. However, the current 
> implementation uses O(N) power function evaluations to calculate the CDF for 
> some point. (Here N is the number of points of the Zipf distribution.) I 
> propose to use rejection sampling instead, which allows the generation of a 
> single random value in constant time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to