【发布时间】:2011-08-01 16:45:15
【问题描述】:
我有一个包含大约 40 个字符串的列表,并希望为每个项目分配一个权重/百分比。在运行时,我现在想要一个随机发生器根据其百分比从列表中选择一个项目。这意味着在足够大的样本量下,该项目被选中的次数将对应于分配的百分比。我面临的一个问题是,将来我可能想要扩展列表,然后必须为其他项目分配一个新的百分比。保存此列表并为各个项目分配权重的最佳方法是什么?
我可以想出一些方法来实现这一点,但它们都相当快速和肮脏,所以我希望有人能想到一个设计模式。我正在使用 Python,但由于这是概念性的,我并没有真正在寻找明确的示例。
非常感谢您的帮助。
【问题讨论】:
-
每个项目的百分比是否取决于列表的其余部分?目前尚不清楚您要做什么。也许您的一个想法会更清楚地说明它?
-
您是否需要一个“纯”python 解决方案,或者它可以基于例如
scipy和/或numpy(参见scipy.org)?谢谢 -
是的,每个项目的百分比将取决于列表的其余部分。理想情况下,我会添加一个带有“重量”的新项目,并且我分配给该项目的重量会从列表中的所有其他项目中平均扣除。但我想这将是一个高级解决方案。
-
Pure python 是首选,但如果 numpy / scipy 解决方案产生明显更好的结果(无需掸掉我的微积分书),我会试一试
-
我似乎迟到了(因为你已经接受了)但是,是的
scipy/numpy确实可以让你以非常直接的方式使用你的empirical distribution function。少得多的编码和非常好的性能(如果重要的话)。谢谢