可能重复:
random.choice 的加权版本
为简单起见,假设一个函数接受 4 个输入:2 个名称及其各自的“偏差/权重”,我如何编写一个函数,使其返回a
或b
随机返回,但仍将这些权重视为随机结果。
a = 'x'
b = 'y'
p_a = 10
p_b = 90
def myRand(a, p_a, b, p_b):
return 'x' 10% of the time, 'y' 90% of time
到目前为止我所做的
import random
def myRand(a, p_a, b, p_b):
probs = [a]*p_a + [b]*p_b
return random.choice(probs)
有人可以指出为什么这是不正确或不是最佳答案吗?我的理由是我假设每个元素都有相同的被选中的概率,所以结果应该仍然有利于 10:90。或者也许我们可以在使用之前对数组进行洗牌random.choice()
?
有一个更好的方法吗?也许我在这里遗漏了一些明显的东西,或者这是正确的吗?
谢谢