algorithm - 使用随机数优化资源分配

标签 algorithm logic

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

算法如下:

  1. 获取资源。
  2. 生成一个随机数。
  3. 如果index等于随机数的位置还没有分配资源,则转4,否则转5。
  4. 分配资源到索引等于随机数的位置。
  5. 转到第 2 步。

最佳答案

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

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

关于algorithm - 使用随机数优化资源分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15336515/

相关文章:

php - 如何避免循环内循环

相关项目分组算法

algorithm - 如何制作 Zip 炸弹?

javascript - 为什么 `false && true || true` 评估为真?

javascript - 在 node.js 中 `module` 总是一个对象吗?

python-3.x - 无法理解此递归函数的分配和环境用法

Java 单例方法不工作

algorithm - ABORTED 作为有限状态机转换中的 "special"状态

c++ - 使用 Dancing Links 精确覆盖

c++ - 具有最低值的查找元素的关联容器