From 3e3b07c4e8b619918a6ece624c7072754cab0707 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Sat, 24 May 2014 16:46:59 +0000 Subject: Don't use math/big when generating random numbers. --- csrand/csrand.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'csrand/csrand.go') diff --git a/csrand/csrand.go b/csrand/csrand.go index 1700b02..5a86da0 100644 --- a/csrand/csrand.go +++ b/csrand/csrand.go @@ -35,8 +35,8 @@ package csrand import ( cryptRand "crypto/rand" + "encoding/binary" "fmt" - "math/big" "math/rand" ) @@ -52,12 +52,15 @@ type csRandSource struct { } func (r csRandSource) Int63() int64 { - ret, err := cryptRand.Int(cryptRand.Reader, big.NewInt(int64((1<<63)-1))) + var src [8]byte + err := Bytes(src[:]) if err != nil { panic(err) } + val := binary.BigEndian.Uint64(src[:]) + val &= (1<<63 - 1) - return ret.Int64() + return int64(val) } func (r csRandSource) Seed(seed int64) { -- cgit v1.2.3