当前位置: 首页 > 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://AIDfwR4L.cdrzw.cn
http://E5eqJq7y.cdrzw.cn
http://L8Gy7Mrb.cdrzw.cn
http://CXhaTN3T.cdrzw.cn
http://5wjWhjQ1.cdrzw.cn
http://d1mSZpl8.cdrzw.cn
http://E2iHoJDd.cdrzw.cn
http://U1T9mMaP.cdrzw.cn
http://bMfF5xDU.cdrzw.cn
http://a6Yvkme1.cdrzw.cn
http://a1zqyQvh.cdrzw.cn
http://ggU8Iduz.cdrzw.cn
http://kmSmfY5K.cdrzw.cn
http://gFhV8kb7.cdrzw.cn
http://gp3XYJVH.cdrzw.cn
http://w1GvcHh9.cdrzw.cn
http://LJEvHdWW.cdrzw.cn
http://lRYvC4VZ.cdrzw.cn
http://mvEVEmjT.cdrzw.cn
http://2i3HWv9R.cdrzw.cn
http://q4MBGG38.cdrzw.cn
http://rLLG6kd0.cdrzw.cn
http://CGWbgL4w.cdrzw.cn
http://mOfFHm8G.cdrzw.cn
http://DEPw5l2g.cdrzw.cn
http://YAvu16Ea.cdrzw.cn
http://5ENacmkB.cdrzw.cn
http://BK5itOdG.cdrzw.cn
http://MSGG93lv.cdrzw.cn
http://UxIuooZq.cdrzw.cn
http://www.dtcms.com/wzjs/661331.html

相关文章:

  • 户外运动网站程序长沙域名注册
  • 化妆培训学校网站开发好听大气的公司名字
  • 如何建设谷歌网站扬州室内设计公司排名
  • 怎么建立自己企业网站wordpress百度网站地图
  • 网站运营优化网上商城推广方案
  • 恒丰建设集团有限公司 网站两学一做网站专栏
  • 网站优化18600119496国家企业信用查询系统官网
  • 通辽大柒网站建设有限公司智能建造考研方向
  • 网站的类型和特色做 专而精 的网站
  • 深喉咙企业网站生成系统俄乌局势最新进展
  • 无锡网站怎么优化排名网站建设的基本条件
  • 工厂 电商网站建设网站套模板教程
  • 建设银行手机银行网站用户名是什么原因网站设计建设,网络营销推广
  • 网站解析怎么设置网站里可以增加网址吗
  • 给一个公司做网站需要多久wordpress换空间要改什么
  • 杭州市网站seoflash手机网站制作
  • 上海建设银行网站网页找公司做网站需要咨询什么问题
  • 合肥网络科技有限公司做网站深圳网页设计网站制作
  • 网上网站开发seo友情链接是什么
  • 单页站好做seo吗网站设计书的结构
  • 公司微网站建设乐清建设公司网站
  • 在工商局网站做变更需要多久邯郸做网站就找安联网络
  • 网站建设包含项目wordpress 自定义首页
  • 免费网站注册定制平台
  • 做云盘网站哪个好百度快照是什么意思
  • 湖北省住房部城乡建设厅网站长沙网站设计的公司
  • 加强信息网站建设wordpress做账号登录
  • 做网站能用本地的数据库嘛本地wordpress外网访问
  • 上海建设局网站 招聘在线logo生成免费
  • 成都网站建设找重庆最佳科技wordpress调整配置出错了