【发布时间】:2013-11-18 19:55:57
【问题描述】:
我正在尝试找出一个随机数量的计算器,但以稀有性为例:
choices = [10,100,1000,10000]
10 最常见,100 更常见,1000 罕见,10000 极其罕见
我试过了
import random
def getAmmounts():
choices = [10, 100, 1000, 10000]
values = [random.choice(choices) for i in range(10)]
return values
它返回了大量的值,但它们不是随机的10000 经常出现,而当我调用它时它几乎不应该出现,我收到的数据是:
[1000, 10000, 100, 1000, 10000, 10, 1000, 10000, 100, 100]
其中有两个10000's,几乎没有任何10 值,而10s 和100s 应该是最常见的,然后偶尔出现1000,但几乎没有10000 值。有没有办法设置一个优先类型的函数来做到这一点?在完成后应该返回的一些很好的示例数据是:
[10,10,100,10,10,100,1000]
还有偶尔的10000,但应该非常罕见,知道如何设置吗?
【问题讨论】:
-
每个数字到底应该有多常见(即,概率是多少)?
-
@jwodder 每个的概率不是一个确切的数量,但
10s应该是最常见的,所以在具有 20 个值的数据中,10应该出现大约 6-10 次,但永远不要精确到 100值可能是 3-5 千次或两次,但几乎不会出现 10000 值 -
@user2925490 jwodder 所问的实际上是对总体解决方案的暗示。您想为这些值分配概率,例如,
10出现 80% 的时间,100出现 10% 的时间,1000出现 8% 的时间,10000出现 2%的时间。但是,在为此分配实际百分比时,请记住getAmounts()将实时运行多少次,这样如果用户可以在每分钟内运行getAmounts()1000 次,那么您仍然有@ 987654349@ 是一个罕见的数字(一次或两次)。这将需要概率/统计数学。 -
@user2925490 除了我刚才说的,你说你想让
10出现6 out of 20 times。将其重新调整为统计问题,注意6 of 20可以表示为百分比((6/20)*100 = 30%!)
标签: python probability weighted-average