在生成随机数的时候我发现了这样一个问题:那就是
random.randint(0,1)不仅可以输出0,也可以输出1;这和我以前经常习惯性认为的左闭右开区间是相悖的,事实证明的确如此:
import numpy as np
import pandas as pd
nsteps = 1000
draws = np.random.randint(0,2,size = nsteps)
draws
这里输出的是一个数组,但是其中只包含0,1两个元素(因为我生成了1000个元素,所以现在只挑一部分写出):
array([0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0,
0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
0, 0, 1, 1, 0, 1…,1])
这是因为在numpy库中的这个方法是针对传入的0,2参数(不包含2)来生成随机数的。
如果使用python自带的random.randint(0,2)来写则结果中也有一定几率出现2.
test = []
for i in range(100):
b = random.randint(0,2)
test.append(b)
print(test)
输出:
[0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 2, 0, 1, 0, 0, 2, 0, 2, 1, 2, 1, 1, 2, 0, 1, 2, 1, 1, 2, 1, 1, 0, 1, 2, 0, 0, 0, 2, 1, 1, 0, 0, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 0, 2, 1, 1, 0, 0, 1, 0, 2, 2, 0, 0, 1, 1, 2, 2, 1, 1, 0, 1, 0, 1, 2, 2, 1, 0, 2, 2, 0, 0, 0, 1, 2, 0, 0, 2, 2, 2, 2, 0]