get state by state sampling done
This commit is contained in:
parent
18cb3710d9
commit
d1dc3a5e75
48
main.go
48
main.go
|
@ -3,17 +3,30 @@ package main
|
|||
import (
|
||||
"encoding/csv"
|
||||
"fmt"
|
||||
rand "math/rand/v2"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
// "strings"
|
||||
)
|
||||
|
||||
/* Structs */
|
||||
type State struct {
|
||||
Name string
|
||||
Votes int
|
||||
VictoriousPartyPerElection map[string]string
|
||||
}
|
||||
|
||||
type VotesForEachParty struct {
|
||||
Democrats int
|
||||
Republicans int
|
||||
}
|
||||
|
||||
type src = *rand.Rand
|
||||
|
||||
/* Globals */
|
||||
var r = rand.New(rand.NewPCG(uint64(1), uint64(2)))
|
||||
|
||||
/* Load data from csvs */
|
||||
func readStates() ([]State, error) {
|
||||
var states map[string]State = make(map[string]State)
|
||||
|
||||
|
@ -81,11 +94,6 @@ func readStates() ([]State, error) {
|
|||
return states_slice, nil
|
||||
}
|
||||
|
||||
type VotesForEachParty struct {
|
||||
Democrats int
|
||||
Republicans int
|
||||
}
|
||||
|
||||
func sampleFromState(state State) VotesForEachParty {
|
||||
switch state.Name {
|
||||
case "Nebraska":
|
||||
|
@ -93,7 +101,20 @@ func sampleFromState(state State) VotesForEachParty {
|
|||
case "Maine":
|
||||
return VotesForEachParty{Democrats: 1, Republicans: 0}
|
||||
default:
|
||||
return VotesForEachParty{Democrats: 1, Republicans: 0}
|
||||
{
|
||||
p_republican := 0.0
|
||||
for _, party := range state.VictoriousPartyPerElection {
|
||||
if party == "R" {
|
||||
p_republican++
|
||||
}
|
||||
}
|
||||
p_republican = p_republican / float64(len(state.VictoriousPartyPerElection))
|
||||
if r.Float64() < p_republican {
|
||||
return VotesForEachParty{Democrats: 0, Republicans: state.Votes}
|
||||
} else {
|
||||
return VotesForEachParty{Democrats: state.Votes, Republicans: 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,20 +125,15 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
// Example states to query
|
||||
example_state_names := []string{"California", "Texas", "Florida"}
|
||||
|
||||
for _, state := range states {
|
||||
for _, example_state_name := range example_state_names {
|
||||
if strings.EqualFold(state.Name, example_state_name) {
|
||||
fmt.Printf("%s: Votes: %d, Winners: ", state.Name, state.Votes)
|
||||
fmt.Printf("%s: Votes: %d,\n\tWinners: ", state.Name, state.Votes)
|
||||
for year, party := range state.VictoriousPartyPerElection {
|
||||
fmt.Printf("[%s: %s] ", year, party)
|
||||
}
|
||||
election_sample := sampleFromState(state)
|
||||
fmt.Printf("\n\tSample: Democrat seats: %d, Republican seats: %d", election_sample.Democrats, election_sample.Republicans)
|
||||
fmt.Println()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user