洗牌算法:随机交换洗牌
1. 简介
将数据从前向后遍历,将当前元素随机与任意一个元素做交换。
2. 演示
2.1. 文件树型图
shuffle
├── go.mod
├── shuffle.go
└── shuffle_test.go
2.2. 代码
shuffle.go
package shuffle
import (
"math/rand"
"time"
)
func RandomSwapShuffle(data []int) {
length := len(data)
for i:=0; i<length; i++ {
randomIndex := rand.Intn(length)
data[i], data[randomIndex] = data[randomIndex], data[i]
}
}
shuffle_test.go
package shuffle
import "testing"
func TestRandomSwapShuffle(t *testing.T) {
arr := []int{2, 8, 1, 7}
RandomSwapShuffle(arr)
t.Log(arr)
}
2.3. 测试
=== RUN TestRandomSwapShuffle
shuffle_test.go:8: [7 8 2 1]
--- PASS: TestRandomSwapShuffle (0.00s)
PASS