当前位置: 首页 > wzjs >正文

公司网站模板 网盘下载自己做的网站是怎么赚钱

公司网站模板 网盘下载,自己做的网站是怎么赚钱,成都园林设计公司推荐,百度海外视频网站建设大白话javascript实现一个函数,将数组中的元素随机打乱顺序 下面我会详细介绍几种用 JavaScript 实现随机打乱数组元素顺序的方法,同时加上代码注释。 方法一:Fisher-Yates 洗牌算法 这是一种经典的洗牌算法,其核心思想是从数组…

大白话javascript实现一个函数,将数组中的元素随机打乱顺序

下面我会详细介绍几种用 JavaScript 实现随机打乱数组元素顺序的方法,同时加上代码注释。

方法一:Fisher-Yates 洗牌算法

这是一种经典的洗牌算法,其核心思想是从数组的最后一个元素开始,依次向前遍历,对于每个位置,随机选择一个前面的位置(包括当前位置)的元素与之交换。

function shuffleArray1(array) {// 获取数组的长度let len = array.length;// 当数组还有多个元素未处理时while (len > 0) {// 生成一个 0 到 len - 1 之间的随机整数,作为要交换的位置let randomIndex = Math.floor(Math.random() * len);// 将 len - 1 位置的元素与随机位置的元素交换[array[len - 1], array[randomIndex]] = [array[randomIndex], array[len - 1]];// 处理下一个元素,数组长度减 1len--;}return array;
}// 测试数组
let testArray1 = [1, 2, 3, 4, 5];
console.log(shuffleArray1(testArray1));

方法二:使用 sort 方法和随机比较函数

这种方法利用了 JavaScript 数组的 sort 方法,通过传入一个随机的比较函数,让数组元素随机排序。

function shuffleArray2(array) {// 使用 sort 方法和随机比较函数return array.sort(() => Math.random() - 0.5);
}// 测试数组
let testArray2 = [1, 2, 3, 4, 5];
console.log(shuffleArray2(testArray2));

实现原理思路总结

  • Fisher-Yates 洗牌算法:它的优点是每个元素在每个位置出现的概率是相等的,是一种公平的洗牌算法。通过不断地随机交换元素,让数组元素的顺序变得随机。
  • 使用 sort 方法和随机比较函数:这种方法比较简单,但由于 sort 方法的实现原理,它并不是一种完全公平的洗牌算法,有些元素可能会有更高的概率出现在某些位置。不过在一些对随机性要求不是特别高的场景下,这种方法也可以使用。

除了Fisher-Yates 洗牌算法,还有哪些方法可以实现数组元素的随机打乱?

除了 Fisher - Yates 洗牌算法外,下面为你介绍另外几种实现数组元素随机打乱的方法,同时会给出代码示例并加上详细注释。

1. 随机选择元素法

这种方法的思路是,不断从原数组中随机选取元素,添加到新数组中,同时从原数组中移除该元素,直到原数组为空。

function shuffleArrayByRandomSelection(arr) {// 创建一个空数组用于存储打乱后的元素let shuffled = [];// 当原数组还有元素时,继续循环while (arr.length > 0) {// 生成一个 0 到原数组长度减 1 之间的随机索引let randomIndex = Math.floor(Math.random() * arr.length);// 从原数组中取出该随机索引对应的元素let randomElement = arr[randomIndex];// 将该元素添加到新数组中shuffled.push(randomElement);// 从原数组中移除该元素arr.splice(randomIndex, 1);}return shuffled;
}// 测试数组
let testArray1 = [1, 2, 3, 4, 5];
console.log(shuffleArrayByRandomSelection([...testArray1]));

2. 结合 Math.random() 和 splice() 优化版

此方法与上面的随机选择元素法类似,但在代码实现上更简洁一些。

function shuffleArrayOptimized(arr) {let newArr = [];// 复制原数组,避免修改原数组let tempArr = [...arr];while (tempArr.length > 0) {// 随机选择一个索引let index = Math.floor(Math.random() * tempArr.length);// 把该索引对应的元素添加到新数组newArr.push(tempArr[index]);// 从临时数组中移除该元素tempArr.splice(index, 1);}return newArr;
}// 测试数组
let testArray2 = [1, 2, 3, 4, 5];
console.log(shuffleArrayOptimized([...testArray2]));

实现原理思路总结

  • 随机选择元素法:通过不断从原数组中随机挑出元素放到新数组里,原数组中的元素就会被逐步打乱到新数组中。因为每次选择都是随机的,所以能实现打乱效果。不过由于频繁使用 splice 方法,当数组很大时,性能可能会受到影响。
  • 结合 Math.random() 和 splice() 优化版:核心思路和随机选择元素法一样,只不过将原数组复制了一份,避免修改原数组,代码结构上更加清晰明了,同样在处理大数组时性能方面会存在一定的问题。

这些方法虽然都能实现数组元素的随机打乱,但在性能和随机性的均匀性上可能会有所差异。在实际使用时,可根据具体的需求来选择合适的方法。


文章转载自:

http://ONDflpZ9.nhLyL.cn
http://VGVcoWbb.nhLyL.cn
http://m6clYzk4.nhLyL.cn
http://zmXuQ561.nhLyL.cn
http://CM4cchgf.nhLyL.cn
http://lXRyVa5q.nhLyL.cn
http://meSU3mpR.nhLyL.cn
http://ryTwAtUm.nhLyL.cn
http://rtzqwjC8.nhLyL.cn
http://4HFRW8M3.nhLyL.cn
http://bWHOn94I.nhLyL.cn
http://g56mnIet.nhLyL.cn
http://bVBz9d25.nhLyL.cn
http://R3JO06tT.nhLyL.cn
http://gJjpzjKD.nhLyL.cn
http://FMymNiDe.nhLyL.cn
http://UGfvmLdr.nhLyL.cn
http://iXlQ99L7.nhLyL.cn
http://jAVg6Er3.nhLyL.cn
http://ChDYjLZU.nhLyL.cn
http://yUQgrJde.nhLyL.cn
http://HdEEe3SY.nhLyL.cn
http://BsSD8a22.nhLyL.cn
http://7yapRBq4.nhLyL.cn
http://8K1Xwh3q.nhLyL.cn
http://wubktFF9.nhLyL.cn
http://eN2dp0DZ.nhLyL.cn
http://H04xmfv2.nhLyL.cn
http://1Ba7iQZ5.nhLyL.cn
http://na8pRgW8.nhLyL.cn
http://www.dtcms.com/wzjs/748197.html

相关文章:

  • rio门户网站的制作合肥的网站建设州
  • 静态网站登陆怎么做设计公司官网首页
  • 直播网站怎么做的企业网站 seo怎么做
  • 现在做网站建设都是自建wordpress中国风主题下载
  • 龙井网站建设服务好的高端网站建设企业
  • 泽州县住房保障和城乡建设局网站ip或域名查询网
  • 跨国网站浏览器安徽企业网站制作
  • 做网站 宁波nat123做视频网站
  • 电子商务网站建设 市场分析软件技术专业介绍及就业方向
  • 东莞网站建设企业wp做网站难吗
  • 专做实习生招聘的网站wordpress手机发布
  • 网页制作模板的网站外包加工网是不是骗钱的
  • 山西省建设工程信息网站网站开发与设计案例
  • 中国建设银行黄冈分行网站企业宣传方式
  • 商标设计网站是哪个宝塔做网站安全吗
  • 做网站跟app需要多少钱杭州app开发公司集中
  • 做爰网站名称网站建设栏目
  • 政务服务中心 网站建设网站开发视频转码
  • 推荐小蚁人网站建设wordpress 简洁文章主题
  • 网站做百度推广为什么没人咨询临淄招聘信息网
  • 湛江市建设教育协会学校网站六安同城网
  • 专业网站制作网络公司怎样自学开网店
  • 百度联盟网站一定要备案吗建立平台网站要多久
  • wordpress图片站优化嘉兴制作网站
  • 网站产品展示代码什么是网络营销的核心竞争力
  • 自己做网站卖货多少钱扬子科技网站建设
  • 深圳企业做网站公wordpress 返回顶部功能
  • 黄石网站设计公司泉州企业自助建站
  • 大兴区住房和城乡建设部网站有谁知道知乎网站是谁做的
  • 网站的字体做多大如何创建网站和域名