From b6063172419d7cb4b7c8694a68e19e9bc34a27ba Mon Sep 17 00:00:00 2001 From: Daniel Mason Date: Thu, 17 Jul 2025 21:16:01 +1200 Subject: [PATCH] Update randomness --- go.sum | 4 ++++ main.go | 15 +++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 go.sum diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..d198118 --- /dev/null +++ b/go.sum @@ -0,0 +1,4 @@ +github.com/lukechampine/randmap v0.0.0-20161125183226-9e3c222d0413 h1:tysX0ocX3VYPAW06M8E5sEkRzr+7ygS162QpIi/N3hI= +github.com/lukechampine/randmap v0.0.0-20161125183226-9e3c222d0413/go.mod h1:CDBUzfMMkesqPDGmuMzuDrzBd2069GPe4wMJ3FC2sEw= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= diff --git a/main.go b/main.go index 7ccbfde..a82d041 100644 --- a/main.go +++ b/main.go @@ -2,16 +2,17 @@ package main import ( "bufio" + "crypto/rand" "io" "log" - "math/rand" + "math/big" "net/http" "os" ) var ( port = "8080" - facts = []string{} + facts = map[int64]string{} ) func main() { @@ -30,6 +31,7 @@ func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, getRandomFact()+"\n") }) + err = http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Error loading facts: %v", err) @@ -45,10 +47,13 @@ func loadFacts() error { defer file.Close() scanner := bufio.NewScanner(file) + i := 0 for scanner.Scan() { - facts = append(facts, scanner.Text()) + facts[int64(i)] = scanner.Text() + i++ } + log.Println("Loaded", len(facts), "cat facts") return scanner.Err() } @@ -58,5 +63,7 @@ func getRandomFact() string { return "No facts available." } - return facts[rand.Intn(len(facts))] + counter := int64(len(facts) - 1) + n, _ := rand.Int(rand.Reader, big.NewInt(counter)) + return facts[n.Int64()] }