Канонический способ генерации случайных чисел в 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.

Ответы на вопрос(1)

Ваш ответ на вопрос