Мне нужно отобрать 10 равномерно распределенных случайных чисел от 0 до 1. Поэтому я подумал, что следующий код на питоне сделает это:
positions = []
for dummy_i in range(1000000):
positions.append(round(random.random(),1))
Однако при отображении результата на гистограмме результат выглядит следующим образом:
Таким образом, округление, кажется, разрушает равномерное распределение, созданное random.random(). Интересно, что вызывает это и как предотвратить это. Спасибо за вашу помощь!
collections.Counter
: попробуйтеcollections.Counter(round(random.random(), 1) for _ in range(10**6))
, и вы увидите, что количество примерно одинаково для0.1
до0.9
. - person Mark Dickinson   schedule 17.12.2015