使用random得到的[0,1随机数)和你的输出映射到该区间.
from random import random
result = []
# Return 100 results (for instance)
for i in range(100):
res = random()
if res < 0.8:
result.append(1)
elif res < 0.95:
result.append(2)
else:
result.append(3)
return result
Run Code Online (Sandbox Code Playgroud)
这是一个简单的解决方案.您可能希望编写一个更优雅的,允许您在专用结构(列表,字典,...)中指定每个数字的概率,而不是在if/else语句中.
但是,如本回答所示,您可能最好使用专用库.这是scipy的一个例子stats.rv_discrete
from scipy import stats
xk = np.arange(1, 4)
pk = (0.8, 0.15, 0.05)
custm = stats.rv_discrete(name='custm', values=(xk, pk))
# Return 100 results (for instance)
return custm.rvs(size=100)
Run Code Online (Sandbox Code Playgroud)