标签:shuff number class new 方法 i++ 需要 dex 就是
打乱一个没有重复元素的数组。
示例:
// 以数字集合 1, 2 和 3 初始化数组。
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。
solution.shuffle();
// 重设数组到它的初始状态[1,2,3]。
solution.reset();
// 随机返回数组[1,2,3]打乱后的结果。
solution.shuffle();
这里只说随机返回数组打乱的方式
其实就是求解随机数
下面是go
语言求随机数的方法
// 设置随机数种子
rand.Seed(time.Now().UnixNano())
// 求0-9的随机数
number:=rand.Intn(10)
接下来就是将数组随机打乱方式
0--(length-1)
之间的随机数,这个随机数就是数组的一个下标,将这个下标对应的数组中的元素与第一个元素交换位置0--(length-2)
之间的随机数,然后将这个随机数加上1,得到数组剩下元素中的一个下标,将这个下标对应的元素与第二个元素交换位置 // 使用洗牌算法
// 设置随机数种子
rand.Seed(time.Now().UnixNano())
// 新创建一个底层数组,因为我们后面会修改这个底层数组的值,所以为了能够重置,我们需要新创建一个底层数组
res := make([]int, len(s.originalArray))
copy(res, s.originalArray)
length := len(res)
for i := 0; i < length; i++ {
index := rand.Intn(length - i)
res[i], res[index+i] = res[index+i], res[i]
}
return res
标签:shuff number class new 方法 i++ 需要 dex 就是
原文地址:https://www.cnblogs.com/gyyyl/p/13820561.html