Golang洗牌算法

package main

import (

"fmt"

"math/rand"

"time"

)

func main() {

intArr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}

for i := 0; i < 10; i++ {

shuffle(intArr)

fmt.Println(intArr)

}

}

// 洗牌算法

func shuffle(arr []int) {

rand.Seed(time.Now().UnixNano())

var i, j int

var temp int

for i = len(arr) - 1; i > 0; i-- {

j = rand.Intn(i + 1)

fmt.Println("i=", i, "j=", j)

temp = arr[i]

arr[i] = arr[j]

arr[j] = temp

}

}

====================

结果如下:

i= 8 j= 7i= 7 j= 7i= 6 j= 1i= 5 j= 4i= 4 j= 1i= 3 j= 3i= 2 j= 2i= 1 j= 0[6 1 3 4 7 5 2 9 8]i= 8 j= 7i= 7 j= 7i= 6 j= 1i= 5 j= 4i= 4 j= 1i= 3 j= 3i= 2 j= 2i= 1 j= 0[5 6 3 4 2 7 1 8 9]i= 8 j= 7i= 7 j= 7i= 6 j= 1i= 5 j= 4i= 4 j= 1i= 3 j= 3i= 2 j= 2i= 1 j= 0[7 5 3 4 1 2 6 9 8]

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章