0

我有一个节点列表-NodeList(每个节点都不同)。我有一个数字-N
这里我们要从列表中选择一些节点作为候选节点(需要一半以上)。
有没有什么算法可以实现这个目标。有一些提示:
1. 相同的 N(我们称之为种子),相同的选择结果
2. 候选者的数量必须大于列表大小的一半
3. 不同的种子,不同的结果(尽可能)。

例如:
节点列表(NodeList):[nodeA,nodeB,nodeC,...,nodeZ],NodeList的大小是26。每个节点都是一个地址(在akka中,你可以想象它是一个字符串)。
我需要一个算法。
输入:

  • 种子:一个数字(int)
  • NodeList : 节点列表

输出: - NodeListResult:根据种子,我们从 NodeList 中选择一些节点。也许 [nodeA, nodeB, nodeD, ..., nodeZ]。NodeListResult 的大小必须大于 NodeList 大小的一半。

4

1 回答 1

0
  1. 使用种子 N 初始化随机数生成器
  2. halfSize = 节点列表 / 2
  3. newLength = halfSize * randomNumber() + halfSize
  4. 新节点 = []
  5. for(i over newLength) { nowNodes.push(NodeList.removeElement(randomNumber() * NodeList.size)) }
于 2017-06-08T09:12:48.357 回答