【问题标题】:Generate Random numbers with probability [duplicate]以概率生成随机数[重复]
【发布时间】:2017-10-01 16:53:47
【问题描述】:

我想知道如何以不同的概率生成随机数 (1, 2) 列表。 即:1 的概率为 0.6,2 的概率为 0.4。

谢谢!

【问题讨论】:

  • 如果这是某个问题的重复,我不会感到惊讶,但由于另一个问题专门要求 scipy/numpy 解决方案,我不明白它怎么能算作重复(特别是因为 scipy/numpy 对此太过分了。)
  • 如何在 SO 上滥用 dup 标志的完美示例。
  • random.choices 会这样做,但如果不允许使用库函数,random.choice([j for i in range(len(nums)) for j in [i] * int(10 * probabilities[i])]) 可以工作,假设数字开头是唯一的

标签: python random probability


【解决方案1】:

使用random.choice

import random
random.choice([1,1,1,1,1,1,2,2,2,2])

你也可以写

data = [1]*6 + [2]*4
choice = random.choice(data)

【讨论】:

  • 感谢您的回复。但是如果我们有 0.53251 的概率呢?
  • 谁能告诉我投反对票的原因?
  • @ZohaibIjaz 此方法仅适用于最简单的情况。提问者提出了一个您的解决方案难以解决的问题。
  • @SethM.Larson 再次阅读问题。问了我回答的完全相同的问题。以 0.6 的概率选择 1,以 0.4 的概率选择 2。
  • 我认为有人因回答原始问题(而不是在 cmets 中出现的问题)而惩罚您是不公平的,尽管它仍然是对您的回答的有效批评它不是很灵活。还有更灵活的版本,同样易于编写(例如1 if random.random() < 0.6 else 2。)
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 2017-04-10
  • 2016-01-26
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2013-07-10
  • 2014-10-06
相关资源
最近更新 更多