根据百分比激活某些功能
Activate certain functions based on percent
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 中,chance == 10,这意味着该功能有 10% 的几率被激活。
任何帮助都会非常感激
如果您在 0-100 之间选择一个随机数,并且希望有 10% 的几率发生某些事情,您可以这样做:
if random < 10:
doSomething()
doSomething
会出现在数字 0-10 上,但不会出现在数字 11-100 上,给您 10% 的机会。根据需要对其他函数/概率重复。
具有三个函数的示例:
from numpy.random import choice
func_list = [function1, function2, function2]
weights = [10,40, 50]
choice(func_list, 1, p=weights)()
请注意,要使其正常工作,weights
必须加起来为 100。
此方法仅使用 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]
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 中,chance == 10,这意味着该功能有 10% 的几率被激活。
任何帮助都会非常感激
如果您在 0-100 之间选择一个随机数,并且希望有 10% 的几率发生某些事情,您可以这样做:
if random < 10:
doSomething()
doSomething
会出现在数字 0-10 上,但不会出现在数字 11-100 上,给您 10% 的机会。根据需要对其他函数/概率重复。
具有三个函数的示例:
from numpy.random import choice
func_list = [function1, function2, function2]
weights = [10,40, 50]
choice(func_list, 1, p=weights)()
请注意,要使其正常工作,weights
必须加起来为 100。
此方法仅使用 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]