简介
主要思路为每次随机挑选一个值,放在数组末尾。然后在n-1个元素的数组中再随机挑选一个值,放在数组末尾,以此类推。注意,一定要设置随机种子,否则每次返回的值是一样的。
code
func shuffle(nums []int) []int {
rand.Seed(time.Now().UTC().UnixNano())
for i := len(nums); i > 0; i-- {
last := i - 1
idx := rand.Intn(i)
nums[last], nums[idx] = nums[idx], nums[last]
}
return nums
}