]> Cypherpunks repositories - gostls13.git/commitdiff
math/rand: fix uniform distribution stddev in tests
authorJosh Bleecher Snyder <josharian@gmail.com>
Wed, 26 Jul 2017 17:59:08 +0000 (10:59 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 8 Aug 2017 23:49:00 +0000 (23:49 +0000)
The standard deviation of a uniform distribution is size / √12.
The size of the interval [0, 255] is 256, not 255.
While we're here, simplify the expression.

The tests previously passed only because the error margin was large enough.
Sample observed standard deviations while running tests:

73.7893634666819
73.9221651548294
73.8077961697150
73.9084236069471
73.8968446814785
73.8684209136244
73.9774618960282
73.9523483202549

255 / √12 == 73.6121593216772
256 / √12 == 73.9008344562721

Change-Id: I7bc6cdc11e5d098951f2f2133036f62489275979
Reviewed-on: https://go-review.googlesource.com/51310
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/math/rand/rand_test.go

index bf509e06bec4a8fe1bb61885a6aa86622bf28217..55d2902c69c0757f4d990b3e44ff0871252ea938 100644 (file)
@@ -374,7 +374,7 @@ func testReadUniformity(t *testing.T, n int, seed int64) {
        // Expect a uniform distribution of byte values, which lie in [0, 255].
        var (
                mean       = 255.0 / 2
-               stddev     = math.Sqrt(255.0 * 255.0 / 12.0)
+               stddev     = 256.0 / math.Sqrt(12.0)
                errorScale = stddev / math.Sqrt(float64(n))
        )