如何解决如何设置调用函数的概率
我有一个这样的函数列表:
def function1(a,b):
...
def function2(a,b,c,d):
...
def function3(a,c):
...
...and so on
并且这些函数被单独传递到这个函数中:
new_function = random_func(function2(a,d),other_parameter)
我想设置一个逻辑,我可以这样说:Call function2 30% of the time
。基本上,对于每个函数,我想声明一个概率值,表示它被传递到 random_func()
的频率。
更新
import random
def function1():
print('function1')
def function2():
print('function2')
def function3():
print('function3')
func_args = [(function1()),(function2()),(function3())]
# Choose random function
(func,args),= random.choices(func_args,weights=[0.5,0.3,0.2])
# probabilities ^^^^^^^^^^^^^^^
# Call it
result = func(*args)
print(result)
function1
function2
function3
Traceback (most recent call last):
File "/home/onur/Desktop/random_function.py",line 16,in <module>
(func,0.2])
TypeError: cannot unpack non-iterable NoneType object
解决方法
您可以使用 random.choices
来指定概率:
func_args = [
(function1,(a,b)),(function2,b,c,d)),(function3,c))
]
# Choose random function
(func,args),= random.choices(func_args,weights=[0.5,0.3,0.2])
# probabilities ^^^^^^^^^^^^^^^
# Call it
result = func(*args)
,
在 Salesforce 中,您可以使用地图,根据您的要求将 100% 划分为各种功能,例如 30%、45%、25%,从而为键(功能名称)添加值 分别用于功能1、功能2和功能3。
Map<String,Decimal> mapFunctinNameToProbability = new Map<String,Decimal>();
Map.put('function1',0.3);
Map.put('function2',0.45);
Map.put('function3',0.25);
之后使用 math.random() 选择一个介于 0 和 1 之间的随机数。 #
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。