func vote(client types.RepPoolClient, instance instance.Instance, representatives []string) (string, float64, error) { results := client.Vote(representatives, instance) winningScore := 1e9 winners := []string{} for _, result := range results { if result.Error != "" { continue } if result.Score < winningScore { winningScore = result.Score winners = []string{result.Rep} } else if result.Score == winningScore { // can be less strict here winners = append(winners, result.Rep) } } if len(winners) == 0 { return "", 0, AllBiddersFull } winner := winners[util.R.Intn(len(winners))] return winner, winningScore, nil }