# Anti-Harassment Tools/SecurePoll Improvements/Test Results/100 binomial elections

I used a script to generate 100 random elections. The popularity of the candidates followed a Binomial distribution (p=0.5), i.e. candidates 8, 9, 10, 11, 12 were most popular and candidates 1, 2, 19, 20 were least.

## Election setup

• Candidates: 20
• Seats: 4

## Comparisons

A script compared the candidates SecurePoll and OpenSTV elected. No discrepancies were found in 100 elections.

## R code used to generate test data

```writeBallot <- function(filename, ballots, candidates, numSeats, totalVotes) {
sink(filename)

cat(sprintf("%s %s", length(candidates), numSeats))
cat("\n")
cat("1")
for (cand in ballots[[i]]) {
if (!is.na(cand)) {
cat(" ")
cat(cand)
}
}
cat(" 0")
cat("\n")
}
cat("0")
cat("\n")
for (candidate in candidates) {
cat("\"")
cat(candidate)
cat("\"")
cat("\n")
}
cat("\"")
cat("ElectionTitle")
cat("\"")
cat("\n")

sink()
}

candidates <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
numSeats <- 4
distribution <- dbinom(1:20, 20, 0.5)

for (j in 1:100) {

ballots <- list()
ballots[[i]] <- sample(1:length(candidates), sample(1:length(candidates), 1), replace=FALSE, distribution)
}

randomInt <- sample(1:9999999999, 1)
filename <- sprintf("%s_%s_%s_%s.blt", length(candidates), numSeats, totalVotes, randomInt)

}
```

## Files

All test data and output here: https://github.com/dominic998/SecurePoll-Test-Data/tree/main/test_data/100_binomial_elections

• Test blt files: files ending in `.blt`
• SecurePoll results: files ending `_results.txt`
• OpenSTV results: files ending in `.php`

## Environment

• Where you tested: local docker using PHPUnit
• Version of SecurePoll: 3.0.0 (58bf4c8) 11:07, 31 August 2021