从给定分配中选择项目

问题描述:

我有一组X个项目,例如{鼓风机,割草机,炉子},每个项目都有一定的比例应该从整个集合中选择{鼓风机= 25%,割草机= 25%,炉= 75%}以及这些项目应遵循的特定分布(在选择开始时应多选择鼓风机,在最后选择更多的鼓风机)。我们给出了一些要整体选择的对象(即100),以及一个总体时间(例如100秒)。从给定分配中选择项目

我正在考虑使用轮盘算法,其中*上的重量受当前分布影响作为经过时间(和允许持续时间)的函数,以便可以使用简单函数来确定重量。对于任何人都知道的问题,是否有共同的方法?

目前我已经在java中使用类似于x^2的函数(对权重进行了正确的归一化)来编程类似于此的东西,以确保良好的分布发生。其他建议或常见做法将受到欢迎:-)

+2

首先,你的概率加起来为125%。其次,如何指定选择过程中的项目分布? – 2010-04-23 23:36:41

您的问题描述不完全清楚,但我会尽力回答我的理解。首先,您可以通过执行以下操作从加权分布中选择一个随机项:

  1. 找到所有可能的对象的权重总和,我们将调用wsum。
  2. 选择一个随机数,a。
  3. 初始化累计变量,总数为0.0。
  4. 从第一个可能的对象(权重> 0.0)开始,将权重添加到总数。
  5. 如果一个< total/wsum,这个数字被选中,我们从可能的对象列表中删除它,并从wsum中减去它的权重。
  6. 如果我们选择了足够的对象,继续,否则转到步骤2

它有助于有降序排列,以提高操作的速度稍微有点权重排序的对象。

这只是为了找到我们从当前分布中选择哪个对象。这听起来像你的分布随时间而变化,所以你只需要改变随着时间选择的可能对​​象列表。