Create deterministic but unpredictable ordering #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous algorithm relied entirely on trusting the Election Administrator. Nothing prevented a hypothetical corrupt one from running the script multiple times until the desired outcome was produced. This correction allows for verifiability while still maintaining unpredictability a priori. Specifically, it is a pretty safe assumption that no voter can cause a specific collection of candidates to tie for last place; nor even can a small collusion of voters do so since they do not know how other voters outside the conspirators will vote. If a majority wanted to "conspire" they could also simply elect the candidate(s) they wanted.
It is also necessary to allow selection of more than one winner in an N-way tie, so that capability is added. E.g. in a contest with 11 winners, three candidates may tie for 10/11/12th place. We need to select 2 winners among them, not just one.