简单说明洗牌方法的算法设计。提供方法和思路,刚学jaya搞不懂。
使用随机数。使用数组存放每张牌,遍历这个数组,将当前位置的牌,与随机位置的牌交换。随机数的范围是0~牌总数。
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
洗牌是一种随机打乱序列的方法,常用于随机化数据集、随机选取样本等场景。下面是一种常见的洗牌算法设计:
1. 初始化:给定一个长度为n的序列a,以及一个空序列b。
2. 随机选择一个a中的元素,将其从a中移除,并加入b中。重复n次,直到a为空。
3. 返回b作为打乱后的序列。
思路解析:
该算法通过遍历原序列a,每次随机选择一个元素并将其移动到新序列b中,从而实现了打乱序列的目的。具体来说,随机选择元素的过程可以通过随机数生成器实现,将随机生成的下标作为索引取出元素。在每次选择完成后,将该元素从原序列a中移除,可以通过将其与最后一个元素交换,并将该位置截断实现。这样可以避免重复选择元素,同时也保证了洗牌后的序列不会有遗漏或重复元素。
该算法的时间复杂度为O(n),空间复杂度为O(n),因为需要开辟一个新的序列b来存储打乱后的结果。
不知道你这个问题是否已经解决, 如果还没有解决的话:语法:concat()
合并两个或多个数组,返回一个新数组。原数组不变.
let arr = [1,2,3,4];
let newArr = arr.concat()
arr.push(5);
console.log(arr); // [1,2,3,4,5]
console.log(newArr ); // [1,2,3,4]