根据numpy中的概率生成随机数列表

Generating a list of random numbers based on probabilities in numpy

您有一个包含 n 个元素的列表。列表中的每个元素都是 [0,1,2,3]。列表中任何给定元素有 58% 的几率是 1,任何给定元素有 42% (1 - 0.58) 的几率是 [0,2,3].

使用 python/numpy,我该如何生成多个这样的列表?

奖励:通用化,您可以轻松更改列表中的数字集(即 [0,1,2,3,4,5,6,7,8] 而不是 [0,1, 2,3]).

谢谢

import numpy as np

np.random.choice(np.arange(0, 4), p=[0.14, 0.58, 0.14, 0.14])

更通用的版本,允许通过y设置范围:

import numpy as np

y=4

np.random.choice(np.arange(0, y), p=[0.58 if x==1 else (1-0.58)/(y-1) for x in range(0,y)])