使用随机数优化资源分配

时间:2013-03-11 10:40:35

标签: algorithm logic

我必须在限制之间使用随机数分配资源,例如1到9.所以首先,我运行一个函数来获得1到9之间的随机数。然后我检查是否有任何资源已经分配了索引等于到已生成的随机数。如果没有分配资源,我会分配它,否则我返回计算另一个随机数。它工作正常,但在某一点之后,效率会降低。当我达到分配9个中有5个或6个资源的点时,我要等待很长一段时间才能获得剩余的分配。我该如何优化它?

这是算法:

  1. 获取资源。
  2. 生成随机数。
  3. 如果索引等于随机数的位置尚未分配资源,请转到步骤4.否则转到5.
  4. 将资源分配给索引等于随机数的位置。
  5. 转到第2步。

1 个答案:

答案 0 :(得分:3)

不是在循环内部生成随机数,而是预先分配包含索引和shuffle的数组:

indices = [0, 1, 2, ..., n)
shuffle(indices)
for i := 0; i < n; i++ {
    allocate(resource[i], indices[i])
}