runtime: tighten select permutation generation

This is the optimization made to math/rand in CL 21030043.

Change-Id: I231b24fa77cac1fe74ba887db76313b5efaab3e8
Reviewed-on: https://go-review.googlesource.com/9269
Reviewed-by: Minux Ma <minux@golang.org>
diff --git a/src/runtime/select.go b/src/runtime/select.go
index 2dd541b..efe0ec8 100644
--- a/src/runtime/select.go
+++ b/src/runtime/select.go
@@ -244,13 +244,9 @@
 	pollslice := slice{unsafe.Pointer(sel.pollorder), int(sel.ncase), int(sel.ncase)}
 	pollorder := *(*[]uint16)(unsafe.Pointer(&pollslice))
 	for i := 0; i < int(sel.ncase); i++ {
-		pollorder[i] = uint16(i)
-	}
-	for i := 1; i < int(sel.ncase); i++ {
-		o := pollorder[i]
 		j := int(fastrand1()) % (i + 1)
 		pollorder[i] = pollorder[j]
-		pollorder[j] = o
+		pollorder[j] = uint16(i)
 	}
 
 	// sort the cases by Hchan address to get the locking order.