Как я могу получить кандидатов с хешем (число) из списка узлов, алгоритм?
У меня есть список узлов-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 ответ
- используйте начальное число N для инициализации генератора случайных чисел
- halfSize = NodeList / 2
- newLength = halfSize * randomNumber () + halfSize
- newNodes = []
- for (i over newLength) {nowNodes.push (NodeList.removeElement (randomNumber () * NodeList.size))}