在学习人工智能的课程中,编程遇到需要控制概率产生随机数的问题。
np.random.choice(a=x, size=1, replace=False, p=rate)
a是控制产生随机数的范围,size是每次抽取几个数,replace=False的时候是无重复抽取(当size为1的时候,不产生影响。),replace=True的时候代表可能有重复,最后一个参数是概率数组,控制每个值产生的概率。
下面来验证一下。
import numpy as np
x = np.arange(5)
rate = [0.1,0.2,0.4,0.2,0.1]
n=0
for i in range(1000):
a1 = np.random.choice(a=x, size=1, replace=False, p=rate)
if a1 == 2:
n = n+1
rate2 = n/1000
print(rate2)
代码中我们随机抽取的是0到4,他们分别产生的概率保存在rate数组中,然后每次抽取一个,共抽取1000次,最后算出产生2的概率是0.423,非常接近0.4。
所以当我们需要根据概率来产生随机数的时候,我们可以想到np.random.choice()