Канонический способ генерации случайных чисел в Cython
Каков наилучший способ генерации псевдооднородных случайных чисел (двойное число в [0, 1)), а именно:
Кроссплатформенная (в идеале с той же последовательностью образцов)Потокобезопасен (явная передача измененного состояния prng или внутреннее использование локального состояния потока)Без блокировки GILЛегко упаковывается в CythonБыло похожеесообщение более 3 лет назад об этом, но многие ответы не отвечают всем критериям. Например,drand48
является POSIX-специфичным.
Единственный известный мне метод, который, кажется, (но не уверен) соответствуетвсе некоторые критерии это:
from libc.stdlib cimport rand, RAND_MAX
random = rand() / (RAND_MAX + 1.0)
Примечание @ogriselспросил тот же вопрос около 3 лет назад.
редактировать
призваниерант не является потокобезопасным. Спасибо за указание на это @DavidW.