Tôi muốn chọn một số nguyên ngẫu nhiên giữa a
và b
, bao gồm.Hiệu suất của sự lựa chọn so với randint
Tôi biết 3 cách để thực hiện. Tuy nhiên, hiệu suất của họ có vẻ rất phản trực giác:
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]]
Trên máy tính của tôi, điều này mang lại:
0.29744589625620965
0.19716156798482648
0.17500512311108346
Sử dụng một online interpreter, điều này mang lại:
0.23830216699570883
0.16536146598809864
0.15081614299560897
Lưu ý cách trực tiếp nhất phiên bản (# 1) sử dụng chức năng chuyên dụng để thực hiện những gì tôi đang làm là 50% tồi tệ hơn rằng phiên bản kỳ lạ nhất (# 3) được xác định trước một mảng và sau đó chọn ngẫu nhiên từ đó.
Điều gì đang xảy ra?
Thử so sánh t1, t2 và t3 với 'lựa chọn (phạm vi (3))' và câu trả lời phải rõ ràng. – Shashank
't2' và' t3' giống nhau, nhưng trong 't2' bạn đo việc tạo danh sách và trong' t3' bạn không làm. – Jens
@ Jens Vâng, 't2' có liên quan nếu bạn định tạo một vài số cùng một lúc,' t3' tiết kiệm thời gian trong trường hợp bạn biết bạn sẽ cần nhiều số. – Superbest