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

大华伟业网站建设网站建设需要考虑哪些因素

大华伟业网站建设,网站建设需要考虑哪些因素,网站可信度建设,上海3d网站建设大白话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://www.dtcms.com/wzjs/558051.html

相关文章:

  • 旅游景点网站模板计算机应用专业(网站开发)
  • 成都有哪些做网站的黄骅港项目中标结果
  • 旅游网站建设市场分析深圳网页设计推广渠道
  • 网站备案密码忘网站顶部滑动展示的div层提示效果
  • 住房建设建设部网站网站开发毕设任务书
  • 南昌网站建设报价网页制作与设计在哪搜题
  • 面试网站建设的问题6怎么自己制作软件app
  • 建设环保网站查询系统优化网站界面的工具
  • 网站自助搭建做网站要是要求吗
  • 禾天姿网站建设网站整站程序
  • 长沙市网站开发wordpress 主体安装
  • 什么网站做ppt好微信营销网站建设
  • 广东网站制作公司排名山东省住房和城乡建设厅官网查询
  • 阿里企业网站建设品牌建设的过程
  • 站群cms源码wordpress 代码解读
  • 怎么在网上查网站空间是双线还是单线wordpress sns
  • 网站验证码原理企业网站计划书
  • 网站硬件需求住房和建设建设局网站
  • 微信公众号转入公司网站建设中国移动网站官网
  • 长春制作网站软件wordpress 定时发布失败
  • 防伪码查询网站怎么做的什么nas可以做网站服务器
  • 成都网站建设公司招聘怎么做网络广告推广
  • 商城网站开发嵌入支付宝个体工商户能网站备案吗
  • 百度站长平台登录安徽企业网站制作
  • 邵阳专业网站设计如何策划网络推广方案
  • 云南专业网站制作公司春花直播
  • 站长工具seo查询为学校网站做网站推广策划书
  • 手表网站错误怎么办c mvc 大型网站开发
  • 无锡网站设计公司排名做足球原创短视频网站
  • 北京做网站男生工资泰安人才网