Skip to content

Instantly share code, notes, and snippets.

@advincze
Created June 7, 2016 03:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save advincze/4a36ca04e3187610381c5a6f05a3bb63 to your computer and use it in GitHub Desktop.
Save advincze/4a36ca04e3187610381c5a6f05a3bb63 to your computer and use it in GitHub Desktop.
raffle.go
package main
import "fmt"
import "math/rand"
import "time"
func init() {
rand.Seed(time.Now().Unix())
}
func main() {
dudes := []string{"alice", "bob", "charlie", "david", "eric", "fred"}
prizes := []string{"hat", "hat", "tshirt", "tshirt"}
winners := raffle(len(dudes), len(prizes))
for i, winner := range winners {
fmt.Printf("%s won a %s\n", dudes[winner], prizes[i])
}
}
func raffle(ld int, lp int) []int {
var wins, winners = make([]int, lp), make([]int, ld)
for i := 1; i < len(winners); i++ {
winners[i] = i
}
var k int
for i := 0; i < lp; i++ {
k = i % ld
if k == 0 {
//reshuffle
for i := 1; i < len(winners); i++ {
j := rand.Intn(i + 1)
winners[i], winners[j] = winners[j], winners[i]
}
}
wins[i] = winners[k]
}
return wins
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment