]> Cypherpunks repositories - gostls13.git/commitdiff
math/rand: add a comment for the i=0 iteration
authorJingguo Yao <yaojingguo@gmail.com>
Thu, 12 Nov 2015 13:59:30 +0000 (21:59 +0800)
committerKeith Randall <khr@golang.org>
Sun, 15 Nov 2015 08:21:29 +0000 (08:21 +0000)
Fixes #13215

Change-Id: I126117d42e7c1e69cbc7fad0760e225b03ed15bd
Reviewed-on: https://go-review.googlesource.com/16852
Reviewed-by: Keith Randall <khr@golang.org>
src/math/rand/rand.go

index 075b0e580e9a5f27c15e065810c2c5ecc925783a..925d381cb2ae483bb50af14a09234ade9add64b5 100644 (file)
@@ -148,6 +148,11 @@ func (r *Rand) Float32() float32 {
 // Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n).
 func (r *Rand) Perm(n int) []int {
        m := make([]int, n)
+       // In the following loop, the iteration when i=0 always swaps m[0] with m[0].
+       // A change to remove this useless iteration is to assign 1 to i in the init
+       // statement. But Perm also effects r. Making this change will affect
+       // the final state of r. So this change can't be made for compatibility
+       // reasons for Go 1.
        for i := 0; i < n; i++ {
                j := r.Intn(i + 1)
                m[i] = m[j]