Python 如何制作一个函数,使一个输出占20%,另一个输出占10%,另一个输出占70%的时间?
我试图Python 如何制作一个函数,使一个输出占20%,另一个输出占10%,另一个输出占70%的时间?,python,Python,我试图 import random from statistics import mode numlist = [] for i in range(6): numlist.append(random.randint(1, 4)) for i in range(3): numlist.append(random.randint(1, 3)) for i in range(1): numlist.append(random.randint(1, 2)) print(mod
import random
from statistics import mode
numlist = []
for i in range(6):
numlist.append(random.randint(1, 4))
for i in range(3):
numlist.append(random.randint(1, 3))
for i in range(1):
numlist.append(random.randint(1, 2))
print(mode(numlist))
我试图在70%的时间里给出一个数字,在20%的时间里给出另一个数字,在10%的时间里给出另一个数字。
然而,算出数学,50%,30%,20%的两端分别是随机的。随机的(0,9)
i = random.random(0, 9)
if i <= 1:
<10% of the time>
elif i <= 3:
<20% of the time>
else:
<70% of the time>
如果我你是在用概率场p重新创造选择
x = np.random.choice([2,3,4], 1, p=[0.2, 0.1, 0.7])
random.randint(1, x)
使用范围(6)时,它返回0,1,2,3,4,5。您的代码返回一个60-30-10列表
import random
from statistics import mode
numlist = []
for i in range(7):
numlist.append(random.randint(1, 4))
for i in range(2):
numlist.append(random.randint(1, 3))
for i in range(1):
numlist.append(random.randint(1, 2))
在这里,它被包装在一个函数中,该函数允许您确定要在输出中包含多少年
import random
# stt for seven-twenty-ten
def stt_split(n=1):
# returns lists with lengths that are multiples of ten
numlist = []
for decades in range(n):
for i in range(7):
numlist.append(random.randint(1, 4))
for i in range(2):
numlist.append(random.randint(1, 3))
for i in range(1):
numlist.append(random.randint(1, 2))
return numlist
alice = stt_split()
print(alice) # 10 values in a list
bob = stt_split(4)
print(bob) # 40 values in a list
另一方面,如果您不希望返回具有集合分布的列表,但希望函数返回由随机选择的函数计算的值,则可以尝试以下操作
import random
# stt for seven-twenty-ten
def stt_dice(n=1):
# returns lists of random ints with length n
numlist = []
for decades in range(n):
x = random.choices([2, 3, 4], [2, 1, 7])[0]
numlist.append(random.randint(1, x))
return numlist
alice = stt_dice()
print(alice) # 1 value in a list
bob = stt_dice(10)
print(bob) # 10 values in a list
几乎。你的评论刚刚结束。(我指的是中的部分)我想你需要
来获得randint(0,9)你实际上需要,random.random(0,9)
会引发一个TypeError:random()不带参数(给定2个)
。也许你的意思是随机的。均匀的(0,9)
。很好的捕获,这是正确的,不需要涉及numpylambda:random.choices([2,3,4],[0.2,0.1,0.7])
与numpy的文档相反,random.choices
接受一个权重数组,其中概率是单位和的(近似)归一化。所以,random.chooses([2,3,4],[2,1,7])
是等价的。