Как я могу получить кандидатов с хешем (число) из списка узлов, алгоритм?

У меня есть список узлов-NodeList(каждый из них отличается). и у меня есть номер-N
Здесь мы хотим выбрать несколько узлов в качестве кандидата из списка (нужно более половины).
Есть ли алгоритм для достижения этой цели. Есть несколько советов:
1. тот же N(мы называем это семя), тот же результат выбора
2. количество кандидатов должно быть больше половины размера списка
3. разные семена, другой результат (насколько это возможно).

Например:
Список узлов (NodeList): [nodeA, nodeB, nodeC,...,nodeZ], размер NodeList равен 26. Каждый из узлов является адресом (в akka вы можете изобразить, что это строка).
И мне нужен алгоритм.
Входные данные:

  • Семя: число (int)
  • NodeList: список узлов

Вывод: - NodeListResult: в соответствии с начальным числом мы выбираем несколько узлов из NodeList. может быть [nodeA, nodeB, nodeD, ..., nodeZ]. Размер NodeListResult должен быть больше половины размера NodeList.

1 ответ

  1. используйте начальное число N для инициализации генератора случайных чисел
  2. halfSize = NodeList / 2
  3. newLength = halfSize * randomNumber () + halfSize
  4. newNodes = []
  5. for (i over newLength) {nowNodes.push (NodeList.removeElement (randomNumber () * NodeList.size))}
Другие вопросы по тегам