Я хочу выбрать случайное целое число между a
и b
, включительно.
Я знаю 3 способа сделать это. Однако их производительность кажется очень противоречивой:
import timeit
t1 = timeit.timeit("n=random.randint(0, 2)", setup="import random", number=100000)
t2 = timeit.timeit("n=random.choice([0, 1, 2])", setup="import random", number=100000)
t3 = timeit.timeit("n=random.choice(ar)", setup="import random; ar = [0, 1, 2]", number=100000)
[print(t) for t in [t1, t2, t3]]
На моей машине это дает:
0.29744589625620965
0.19716156798482648
0.17500512311108346
Используя онлайн-интерпретатор , это дает:
0.23830216699570883
0.16536146598809864
0.15081614299560897
Обратите внимание, что самая прямая версия (# 1), использующая выделенную функцию для выполнения того, что я делаю, на 50% хуже, чем самая странная версия (# 3), которая предварительно определяет массив и затем выбирает случайным образом из него.
Что происходит?