【发布时间】:2020-09-22 19:44:51
【问题描述】:
我想根据获得 1 的概率和一些初始种子来选择 0 或 1 中的一个。
我尝试了以下操作:
import random
population = [0,1]
random.seed(33)
probabilities = [0.4,0.2,0.5]
def sampleIt():
selectedProb = random.randrange(0,3,1) #select one of probabilities
print('Selected Probability: ', selectedProb)
return random.choices(population, [0, probabilities[selectedProb-1]])
for i in range(100):
sample = sampleIt()
print(sample[0])
以下是示例输出:
Selected Probability: 0.2
1
Selected Probability: 0.5
1
Selected Probability: 0.4
1
Selected Probability: 0.2
1
Selected Probability: 0.5
1
Selected Probability: 0.2
1
疑问:
-
如您所见,它能够随机选择概率。但是对于每个选定的概率,它最终会从总体中选择 1。如果它选择概率 0.2,那么我希望它选择概率 0.2 的 1。这样,它应该至少选择了一次 0。但这并没有发生。为什么会这样?
-
seed设置正确还是我们必须设置不同? -
另外,如果我希望从不同的线程调用
sampleIt(),我需要做哪些更改? -
还有什么标准做法可以提高性能,比如我运行了数百万次吗?我必须使用 numpy 来生成随机数吗?
-
random.randrange()和random.choice()是否遵循均匀分布?
您可以在线运行代码here。
【问题讨论】:
标签: python-3.x random