diff --git a/common/dice/dice.go b/common/dice/dice.go index 150a76134..39d771aed 100644 --- a/common/dice/dice.go +++ b/common/dice/dice.go @@ -25,7 +25,7 @@ func RollDeterministic(n int, seed int64) int { // RollUint16 returns a random uint16 value. func RollUint16() uint16 { - return uint16(rand.Intn(65536)) + return uint16(rand.Int63() >> 47) } func RollUint64() uint64 { diff --git a/common/dice/dice_test.go b/common/dice/dice_test.go index 09b1dd4d3..05b364967 100644 --- a/common/dice/dice_test.go +++ b/common/dice/dice_test.go @@ -30,3 +30,21 @@ func BenchmarkIntn20(b *testing.B) { rand.Intn(20) } } + +func BenchmarkInt31(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = uint16(rand.Int31() >> 15) + } +} + +func BenchmarkInt63(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = uint16(rand.Int63() >> 47) + } +} + +func BenchmarkIntn(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = uint16(rand.Intn(65536)) + } +}