如何写一个随机洗牌函数

2023-11-18

看到了很多人写得随机洗牌函数,但是感觉写得都不是太好,自己写了一个试试。

基本要求 给定一定范围的数比如最大值最小值(min.max)在这个之间进行随机洗牌。

首先生成一个按min到最大的max的数组a。

对数组进行循环,每次随机生成一个要取的下标index。

把这个index对应的数num压入新数组b,同时在a中删除这个num。

一直循环只到a中数组不存在元素即可。

JavaScript对应代码

/*

@param (min,max)   min范围的最小值,max范围的最大值

@return (b) 返回的洗牌数组,如果 min,max不存在返回空,如果min<max 抛出错误。

function shuffle(min,max){
var a= [];
var b = [];

       if(Number.isInteger(min)+Number.isInteger(max)<2){

                 return [];

        }

      if(min > max){

           throw new Error("min 不该小于 max");

       }
for(var i = min;i<=max;i++){
a.push(i);
}
console.log(a);
while(a!=0){
var index = Math.floor(Math.random()*a.length);
var number = a.splice(index,1)-0;

   b.push(number);
}
return b;
}



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何写一个随机洗牌函数 的相关文章

随机推荐

  • Datawhale go语言学习 10反射机制

    go 语言中Type是反射的数据类型 Value是具体的值 原文档中的反射机制三个原则表述为 Reflection goes from interface value to reflection object Reflection goes
  • 【异常】RuntimeError: Failed to process string with tex because latex could not be found

    1 异常描述 RuntimeError Failed to process string with tex because latex could not be found RuntimeError Failed to process st
  • GLSL-WebGL着色器语言语法详解

    GLSL语法 GLSL它是强类型语言 每一句都必须有分号 它的语法和 typescript 挺像 GLSL的注释语法和 JS 一样 变量名规则也和 JS 一样 不能使用关键字 保留字 不能以 gl webgl 或 webgl 开头 运算符基
  • < Linux >:Linux 环境基础开发工具使用 (3)

    目录 一 Linux 调试器 gdb 的使用 1 1 背景 1 2 开始使用 1 3 理解 二 Linux项目自动化构建工具 make与Makefile makefile 2 1 背景 2 2 项目结构 三 Linux 系统中第一个小程序
  • 生活当中调整时钟时间背后发生的事情

    生活当中调整时钟时间背后发生的事情 我们在生活当中想要设定时钟 手表的时间的事情 我们通过会和大多数人一样 会按照手机上的时间来设定 但是 这背后发生了什么事情 我想大部分人应该是不知道的 其实我们自己的时间是自动设定 每隔一阵子 我们的手
  • springboot集成pagehelper

    1 导入pom xml
  • postman调用参数是对象

    写了一个controller 需要用postman调通测试一下 请求参数是vo controller 端口号是1213 postman调用时传入对象的方式如下
  • STC15单片机-低功耗设计

    低功耗设计 STC15省电模式 数据手册有介绍 STC15系列单片机可以运行3种省电模式以降低功耗 它们分别是 低速模式 空闲模式和掉电模式 正常工作模式下 STC15系列单片机的典型功耗是2 7mA 7mA 而掉电模式下的典型功耗是 lt
  • SpringBoot实现微信支付,微信扫码支付,Native支付(全网最详细教程)

    1 添加微信支付依赖
  • ICCV、ECCV、CVPR三大国际会议

    目录 前言 一 ICCV ECCV CVPR是什么 1 ICCV 2 ECCV 3 CVPR 二 三大会链接及论文下载链接 前言 作为刚入门CV的新人 有必要记住计算机视觉方面的三大顶级会议 ICCV CVPR ECCV 统称为ICE 与其
  • 【论文翻译】文本语义提取

    摘要 文本文档是存储信息的手段之一 这些文档可以在个人桌面计算机 内部网和Web上找到 因此 有价值的知识以非结构化的形式嵌入 拥有一个可以从文本中提取信息的自动化系统是非常可取的 然而 开发这样一个自动化系统的主要挑战是自然语言并不是没有
  • geth生成钱包地址

    配置Geth 博主是Ubuntu18 04 所以 sudo apt update sudo add apt repository ppa longsleep golang backports sudo apt update sudo apt
  • 宏定义与逻辑运算学习笔记

    宏定义 宏定义又称为宏代换 宏替换 简称 宏 格式 define标识符 字符串 其中的标识符就是所谓的符号常量 也称为 宏名 掌握 宏 概念的关键是 换 即在对相关命令或语句的含义和功能作具体分析之前就要换 例 define PI 3 14
  • Tracy 小笔记 Vue - Vue 数据的响应式原理

    变量如果是对象的话 那么需要给对象先定义好属性 才能响应式 因此需要提前定义好所需的属性 如 info name 11 value 22 添加属性 如果想要再之后添加属性的话还想要响应式的话 有如下两种方式 使用 Vue set 这个可以是
  • errcode = 40163; errmsg = "code been used"(提供一种解决思路)

    最近在做微信开发 就在开发完毕测试的时候 遇到一个大问题 每次新用户进入的时候就报错 错误基本上就是code been used 我去百度了好久 没有找到合适的方案 后来我仔细的看了一下微信开发文档 终于解决了 注 该方法不一定对所有人有效
  • C语言中关键字const、static、volatile的用法分析

    1 const 作为一个程序员 我们看到关键字const时 首先想到的应该是 只读 因为 它要求其所修饰的对象为常量 不可对其修改和二次赋值操作 不能作为左值出现 看几个例子 const int a 同上面的代码行是等价的 都表示一个常整形
  • TCP 、UDP、IP包的最大长度是多少?

    对于UDP协议来说 整个包的最大长度为65535 其中包头长度是65535 20 65515 对于TCP协议来说 整个包的最大长度是由最大传输大小 MSS Maxitum Segment Size 决定 MSS就是TCP数据包每次能够传 输
  • 数据回归算法

    文章目录 效果一览 文章概述 源码设计 参考资料 效果一览 文章概述 数据回归算法 Matlab实现逐步回归预测模型 逐步回归 Stepwise Regression 其基本思想是将变量逐个引入模型 每引入一个预测变量 解释变量 后都要进行
  • 作为一个Java程序员,深入java虚拟机第四版

    第一阶段 架构师筑基必备技能 我觉得 但凡是个成年人应该都清楚扎实的基本功对自己的工作帮助有多重要 从各大招聘网站的招聘要求来看 第一条都明确说明需要扎实的Java基础 因此 一般笔试以及面试的第一轮 对基础的考察是比较多的 其实我发现有很
  • 如何写一个随机洗牌函数

    看到了很多人写得随机洗牌函数 但是感觉写得都不是太好 自己写了一个试试 基本要求 给定一定范围的数比如最大值最小值 min max 在这个之间进行随机洗牌 首先生成一个按min到最大的max的数组a 对数组进行循环 每次随机生成一个要取的下