if chance == 1:
function1()
elif chance == 4:
function2()
elif chance == 20:
function3()
elif chance == 10:
functiongettingoutofideas()
elif chance == 40:
function_minecraft_club_was_not_on_today_insertcryingemoji()
elif chance == 10:
function8()
elif chance == 4:
functionthesearealotoffunctions()
elif chance == 5:
function_above_when_i_mean_5_i_mean_5_percent_chance()
elif chance == 6:
function_thank_you_for_your_help()
在if和elifs中,当我举例,机会== 10,这意味着有10%的机会激活该功能。
任何帮助 赞赏
答案 0 :(得分:1)
具有三个功能的示例:
weights
请注意,为了实现此功能,{{1}}必须添加最多100个。
答案 1 :(得分:0)
如果您选择0-100之间的随机数,并且您希望有10%的可能性发生,您可以这样做:
if random < 10:
doSomething()
数字0-10会发生doSomething
,但数字11-100会发生{{1}},给你10%的几率。根据需要重复其他功能/概率。
答案 2 :(得分:0)
此方法仅使用Python标准库。
首先将百分比转换为概率。
>>> p = [1, 4, 20, 10, 40, 10, 4, 5, 6]
>>> p = [0.01*_ for _ in p]
然后获得累积概率。有必要只执行一次这些预赛。
>>> cum_probs = [0]
>>> for _ in p:
... cum_probs.append(_ + cum_probs[-1])
...
>>> cum_probs
[0, 0.01, 0.05, 0.25, 0.35, 0.75, 0.85, 0.89, 0.9400000000000001, 1.0]
>>> from random import random
从单位间隔[0,1]中随机选择。
>>> selection = random()
从左侧开始,找到该随机数所属的第一个概率区间,然后停止。
>>> for i, possibility in enumerate(cum_probs[1:]):
... if selection < possibility:
... print ('perform function number ', i)
... break
...
perform function number 3
这是要执行的功能的编号。
这些行只是为了验证所选的随机数是否在所需的时间间隔内。
>>> selection
0.33920981672706096
您可以将函数分配给数组中的间隔。
>>> functions = [function_one, another_fn, my_function, ...]
更有可能的是,你会将它们放在字典中。 (我正在使用你的名字。)
functions = {0: function1(); 1: function2(); ...}
然后你会像这样打电话给那个想要的人。
functions[i]