[Python] Correct way to generate random numbers in Cython?

Discussão em 'Python' iniciado por Stack, Agosto 29, 2025.

  1. Stack

    Stack Membro Participativo

    What is the most efficient and portable way to generate a random random in [0,1] in Cython? One approach is to use INT_MAX and rand() from the C library:

    from libc.stdlib cimport rand
    cdef extern from "limits.h":
    int INT_MAX
    cdef float randnum = rand() / float(INT_MAX)


    Is it OK to use INT_MAX in this way? I noticed that it's quite different from the constant you get from Python's max int:

    import sys
    print INT_MAX
    print sys.maxint


    yields:

    2147483647 (C max int)
    9223372036854775807 (python max int)


    Which is the right "normalization" number for rand()? EDIT additionally, how can the random seed be set (e.g. seeded based on current time) if one uses the C approach of calling rand() from libc?

    Continue reading...

Compartilhe esta Página