gpt4 book ai didi

python - Python 中的随机数生成方法有何不同?

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:51 28 4
gpt4 key购买 nike

要在 Python 中生成 0 到 10 之间的随机 int,我可以执行以下任一操作:

import numpy as np
print(np.random.randint(0, 10))

import random
print(random.randint(0, 10))

这两种方法在计算上有何不同?

最佳答案

请务必注意,这些功能并不等同。在 numpy 中,范围是 [low, high),在 Python random 中是 [low, high]

速度

看来numpy的实现是最快的:

In [1]: import numpy as np
In [2]: %timeit np.random.randint(0, 10)
1000000 loops, best of 3: 206 ns per loop

In [3]: import random
In [4]: %timeit random.randint(0, 10)
1000000 loops, best of 3: 1.5 µs per loop

随机性

随机性似乎是一样的。可以使用 ent 测试随机性

对于这个脚本

import numpy as np
import sys

for _ in range(1000000):
sys.stdout.write(str(np.random.randint(0, 10)))

命令的部分输出 python file.py | ent -c

Value Char Occurrences Fraction  
48 0 100360 0.100360
49 1 100157 0.100157
50 2 99958 0.099958
51 3 100359 0.100359
52 4 100287 0.100287
53 5 100022 0.100022
54 6 99909 0.099909
55 7 99143 0.099143
56 8 100119 0.100119
57 9 99686 0.099686

Total: 1000000 1.000000

Entropy = 3.321919 bits per byte.

对于这个脚本

import random
import sys

for _ in range(1000000):
sys.stdout.write(str(random.randint(0, 9)))

命令的部分输出 python file.py | ent -c

Value Char Occurrences Fraction  
48 0 100372 0.100372
49 1 100491 0.100491
50 2 98988 0.098988
51 3 100557 0.100557
52 4 100227 0.100227
53 5 100004 0.100004
54 6 99520 0.099520
55 7 100148 0.100148
56 8 99736 0.099736
57 9 99957 0.099957

Total: 1000000 1.000000

Entropy = 3.321913 bits per byte.

关于python - Python 中的随机数生成方法有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com