<br><br><div class="gmail_quote">2011/6/25 Kristofer Munsterhjelm <span dir="ltr"><<a href="mailto:km_elmet@lavabit.com">km_elmet@lavabit.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">Jameson Quinn wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Wait.... is that a global randomization, used across all votes? If it is... or in fact, even if it isn't... I suggest you do what Warren suggested, and run it several times, with different random seeds, to see if the results are reasonably stable.<br>


</blockquote>
<br></div>
The way my program works, it deals with candidate numbers instead of names. The standard way to map numbers to names is to call the first named candidate 0, the second candidate 1, and so on. What I did was populate an array idx with 0...n, randomly permute it, then the first named candidate is idx[0], the second named candidate is idx[1] and so on.<br>


<br>
That's a global randomization because the program just sees numbers. If it's being unfair based on the numbers, it won't be unfair based on the candidate names since the mapping has been randomized.<br>
<br>
I could try reseeding many times, but I'd have to find a way of presenting the outcome. Say, for instance, that we have a multiwinner situation where six candidates are to be elected out of ten. The outcome is so that A and B are always in the result, but then the other four are randomly picked from [C-J] with every combination equally likely. How would I output that result? Printing them all would take a lot of space (8 choose 4 = 70). Should I just pick the outcome that happens most often, and break randomly if there's a tie?<br>


<br></blockquote><div>More interesting would be statistics on how many results you got, how common the most-common one was, and similar. (How common the second-most-common one, the median one...)</div><div><br></div><div>

Actually better would be to randomly break the ties on each ballot before feeding it into your algorithm. I suspect that this would be more stable than your global randomization, because there are more potential permutations and thus a greater chance that they cancel each other out. 20-100 runs should be enough to start to get a feel for how stable the results are. (Of course, I don't know how easy that change would be in your program... but if you wanted, I could make and send you a file where I do those permutations 100 times.)</div>

<div><br></div><div>JQ</div></div><br>