Hi Martin,

thanks for your answer!
I had a look at the algorithm and implemented the following thing:

int RNG::zipfRandom(double skew) {
        double a = skew;
        double b = pow(2.0, a - 1.0);
        double X, T, U, V;
        do {
                U = randomDouble(); // produces double in range [0.0..1.0]
                V = randomDouble();
                X = floor(pow(U, -1.0/a - 1.0));
                T = pow(1.0 + 1.0/X, a - 1.0);
        } while (V*X*(T - 1.0)/(b - 1.0) > (T/b));
        return static_cast<int>(X);
}

I'm not that familiar with statistics, but I need this distribution to perform
some simulations and I want to be certain about the correct application of this
function. I attached the output for zipfRandom(1.4) as pdf. Do you recognize any
error in this function?

I've got two more questions:
- I read something a bout the Zipf Exponent which I have to set to 0.4. Do I
achieve this by setting the skew parameter to 1.4?
- How can I limit the number range to a certain interval e.g. [1..65636] without
violating the randomness in the distribution?

Again, excuse me for my rather silly questions...

Michael

Martin Jansche wrote:
Devroye gives a rejection method for sampling from the Zipf
distribution here: http://cg.scs.carleton.ca/~luc/chapter_ten.pdf

-- mj

On Wed, May 28, 2008 at 4:25 PM, Michael Duerr <[EMAIL PROTECTED]> wrote:
Hi,

I'm looking for a function that can produce random numbers that are
Zipf-distributed?
Something like:

int zipfian(double skew, int N),

where skew is the skew factor (e.g. 0.4) and N the upper limit of the range
(e.g. [0, N) )

Does gsl hold something similar or can you provide me a reference for a
sample implementation?

Thanks,
Michael


_______________________________________________
Help-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gsl


Attachment: plot.pdf
Description: Adobe PDF document

_______________________________________________
Help-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gsl

Reply via email to