shuffle洗牌算法java_js打乱一个数组 的 洗牌(shuffle )算法
写php的时候 有个shuffle 函数很爽很好用,但是js要实现同样算法的时候发现没有现成函数,在网上看了大量的例子,觉得不靠谱所以,自己写了一个,其实非常简单,以下是实现代码
var shuffle = function (arrBox) {
arrBox = typeof arrBox === "string" ? arrBox.split("") : arrBox;
//实现一个洗牌算法
var shuffleBox = []
var len = arrBox.length;
for (i = 0; i < len; i++) {
var boxIndex = Math.floor(Math.random() * arrBox.length);
shuffleBox.push(arrBox[boxIndex].valueOf());
arrBox.splice(boxIndex, 1);
}
return shuffleBox;
}
var data = new Arra
示例
shuffle("abcdefghijklmnuvwxyz".split(""));
//结果显示
["g", "u", "x", "k", "y", "f", "v", "l", "j", "n", "b", "z", "w", "d", "c", "e", "a", "h", "i", "m"]
shuffle("abcdefghijklmnuvwxyz".split(""));
//结果显示
["a", "j", "m", "f", "g", "h", "c", "l", "v", "x", "w", "u", "k", "d", "e", "b", "n", "y", "z", "i"]
说明:有的朋友可能觉得我的参数并不是数组,其实是这样的 在console中执行:
"abcdefghijklmnuvwxyz".split("")
//输出
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "u", "v", "w", "x", "y", "z"]
还有一个随机字符串的算法
randStr = (randLen, split, toUpper, str) => {
let shuffle = function (arrBox) {
arrBox = typeof arrBox === "string" ? arrBox.split("") : arrBox;
let shuffleBox = []
let len = arrBox.length;
for (let i = 0; i < len; i++) {
let boxIndex = Math.floor(Math.random() * arrBox.length);
shuffleBox.push(arrBox[boxIndex].valueOf());
arrBox.splice(boxIndex, 1);
}
return shuffleBox;
}
str = str || "abcdefghigklmnopkrstuvwxyz";
randLen=randLen||3;
randLen = randLen > str.length - 1 ? str.length - 1 : randLen;
let randKey = [
(new Date().getTime()).toString(32),
shuffle(str).splice(Math.floor(Math.random() * (str.length - randLen - 1)), randLen).join("")
];
let res = randKey.join(split || "");
return toUpper ? res.toUpperCase() : res;//生成一个随机不重复key
}
shuffle洗牌算法java_js打乱一个数组 的 洗牌(shuffle )算法相关推荐
- Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)
Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...
- 算法12--topK求一个数组中第k大的数
求一个数组中第k大的值 解法一: 建立一个k个元素的最大堆,首先将数组中前k个元素放入堆中,此时堆顶元素为第k大的元素,后面继续遍历数组,比较堆顶元素与数组中元素值,当数组中元素小于堆顶元素时,将堆顶 ...
- 怎样将树的中序遍历的数输入到一个数组中_数据结构与算法-二叉查找树平衡(DSW)...
上一节探讨了二叉查找树的基本操作,二叉查找树的查找效率在理想状态下是O(lgn),使用该树进行查找总是比链表快得多.但是,该论点并不总是正确,因为查找效率和二叉树的形状息息相关.就像这样: 图1-1给 ...
- JS 如何打乱一个数组【生成无序数组】
解决办法:只需要在sort()中,返回随机正负数即可. var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; //生成一个随机正负数 //排序 arr.sort(() => ...
- 数据结构与算法 pdf_整理一个月完成的数据结构与算法PDF和测试代码免费拿
点击上方「10分钟编程」关注我呦 让我们每天「博学」一点点 数据结构与算法 作为一名2021届的学生,今年7月份就要面临秋招了,那么对于应届生来说,要想脱颖而出,笔试就显得太重要了,算法题是笔试环节的 ...
- MATLAB中定义数组序列,matlab怎么定义一个数组
A=[]; n=input('n=');%数组的长度 for i=1:n fprintf('a%.0f=',i); x=input('');%分别输入各个数的值 A=[A,x]; end A 就可以得 ...
- 数组(一维数组、多维数组/二维数组)和简单排序算法
提示:数组是线性数据结构中最为基础,最为典型的一种顺序型结构. 它用一组连续的内存空间 ,来存储一组具有相同类型的数据. 与变量相比,变量是一种单一的数据存储方式,而数组是用于存储一连串的一组数据. ...
- C++二个数组求交集的实现算法(附完整源码)
C++二个数组求交集的实现算法 C++二个数组求交集的实现算法完整源码(实现,main函数测试) C++二个数组求交集的实现算法完整源码(实现,main函数测试) #include <iostr ...
- 无人车路径规划算法---(4)基于搜索的路径规划算法 II(贪心/Astar)
上篇博客中介绍了一些基本的图搜索算法,其中也重点介绍了基于势场来实现的Dijkstra算法.本篇博客将介绍关于Heuristic Function的图搜索算法 开源了一个结合Dijkstra,Gree ...
最新文章
- 子元素绝对定位absolute后,自动撑开宽度
- AndroidStudio3.4.2 gradle5.1.1 apt注解解释器不执行
- leetcode算法题--环形链表 II★
- [源码和文档分享]基于FFMEPEG-MATLAB和C#-SQL SERVER构建的手机录音数据库及特征分析...
- su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
- Metasploit从文件中读取目标地址
- 使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
- SpringCloud 从菜鸟到大牛之五 统一配置中心 Spring Cloud Config
- 闪光灯slave是什么意思_闪光灯实战讲解 | 室内光线+闪光灯使用配合=完美光效...
- GdiPlus[29]: IGPPen: 虚线样式
- 阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
- 神经网络中常用的误差平方和损失函数是什么
- 终极文件/文件夹隐藏方案大全
- 原生的APP、小程序(微信小程序、支付宝小程序、头条小程序、百度小程序.等等)、H5 的优势与劣势分析有那些?
- 关于局域网的一点个人理解及如何建立一个局域网的步骤
- Android9.0源代码中替换默认静态壁纸
- windy网站数据分析
- 家用计算机做raid 2018,让电脑速度翻倍的方法,手把手教你组建RAID!
- html 实现excel表格分页打印,excel分页-用了这么多年Excel才知道,按下这个键,一张纸便可打印全部内容...
- 益智拼图APP隐私政策
热门文章
- Python的闭包的后期绑定问题
- 透传模式(透明传输SeriaNet)详解
- jquery出现“为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项...”的解决办法
- 强化学习《基于策略价值 - Adventage Actor-Critic》
- 漫步线性代数十七——正交基和格拉姆-施密特正交化(上)
- python 时间_Python-基础-时间日期处理小结
- pytorch forward_pytorch的C++ extension写法
- Matlab--view函数详解
- python ftp服务器限速_python实现ftp服务器
- Oracle PL/SQL入门