Что представляет собой самый эффективный и портативный способ генерации случайного случайного числа в [0,1]
в Китоне? Один из подходов заключается в использовании INT_MAX
и rand()
из библиотеки C:Правильный способ генерации случайных чисел в Cython?
from libc.stdlib cimport rand
cdef extern from "limits.h":
int INT_MAX
cdef float randnum = rand()/float(INT_MAX)
Допустимо ли использовать INT_MAX
таким образом? Я заметил, что она сильно отличается от константы вы получите от макс междунара Пайтона:
import sys
print INT_MAX
print sys.maxint
выходов:
2147483647 (C max int)
9223372036854775807 (python max int)
Который является правильной «нормализация» номер для rand()
? EDIT Кроме того, как можно установить случайное семя (например, затраченное на текущее время), если использовать метод C для вызова rand()
из libc?
Вы только что попробовали взять max и min из нескольких тысяч выборок и посмотреть, какой масштабный коэффициент приближается к '1.0'? – phs
Пожалуйста, смотрите «[rand() считается вредным] (https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful)« –