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

前端开发:JS生成32随机数的方法

前言

在前端开发过程中,关于JS逻辑相关的使用相比都不陌生,尤其是在日常开发中使用到的常用的逻辑内容,如倒计时的使用、点击时间放重复点击、生成随机数等等,这些都是非常常用的内容。那么本篇博文就来分享一下关于JS生成32随机数的方法,该知识点是实际开发必备知识点,值得收藏,记录归纳一下,方便后期查阅使用。

随机数概念

随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。

使用场景

在前端开发中,关于随机数生成的实际业务场景,大概有以下几个方面:在支付的时候需要生成支付流水号(主要是微信支付,一般是32位随机数),在集成一些第三方登录时候需要传递一个32位随机数(如中国移动获取当前手机号的业务场景需要随机数),以及生成uuid或者后台需要的唯一标识(也是32位随机数)。

示例说明

废话不多说,这里直接来分享一下实际生成32位随机数的示例代码,如下所示:

示例一:生成32位随机流水号

    /*默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1*/
    var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    var maxPo = $chars.length;
    var randomNum = '';
    for (var i = 0; i < 32; i++) {
          randomNum += $chars.charAt(Math.floor(Math.random() * maxPo));
    }
    console.log("randomNum:",randomNum)

 

或者 生成32位随机流水号(以函数形式来提现,大写字母)

function getRandom() {

     var array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"],

    randomNum = "";
    for(var i = 0; i < 32; i++) {
        randomNum += array[parseInt(Math.random() * 36)];
    }
    return randomNum;
}

示例二:传给后台一个随机的唯一标识的参数(32位随机数,小写字母)。

function getNum(){
    var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
     var randomNum = "";
     for(var i=0;i<32;i++){
        var id = parseInt(Math.random()*61);
        randomNum += chars[id];
     }
     return randomNum;
}

引申

上面介绍的是比较简单的随机生成32位随机数的方法,那么再来看一下其他方式的生成随机数的方法,具体示例如下所示:

示例一:使用randomString,val表示长度,默认32位

function randomString(val) {
  val = val || 32;
  var chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
  var maxPo = chars.length,
  randomNum = "";
  for (i = 0; i < val; i++) {
    randomNum += chars.charAt(Math.floor(Math.random() * maxPo));
  }
  return randomNum;
}
alert(randomString(32));

示例二:生成从100000~999999的随机数

function getRandomNum(min, max) {
  var range = max - min;
  var rand = Math.random();
  return(min + Math.round(rand * range));
}
var num = getRandomNum(10000, 999999);
alert(num);

示例三:对已经定义过的数组字符集合进行随机选取

var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

function generateMixed(num) {
   var result = "";
   for(var i = 0; i < num ; i ++) {
     var id = Math.ceil(Math.random()*32);
     result += chars[id];
   }
   return result;
}

alert(generateMixed(8));

示例四:生成随机数之后转换成36进制,再进行截取

//如Math.random() 生成随机数字, eg: 0.123456789,又如.toString(36) 转化成36进制 : "0.4fzyo82mvyr”,再如.slice(-8); 截取最后八位 : "yo82mvyr"。

var str = Math.random().toString(36).slice(-7);

alert(str);

示例五:把字符串集合随机排序,随机输出指定的长度

function randomString(num) {
  var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  var result = '';
  for (var i = num; i > 0; --i) {
    result += str[Math.floor(Math.random() * str.num)];
  }
  return result;
}

alert(randomString(7));

拓展

一般情况下,在前端开发中需要生成的都是32位随机数,但是也不排除其他的需求,如6位随机数也有需求,具体的随机生成6位数的操作如下所示:

    <!-- 生成六位随机数 -->
    <script type="text/javascript">
        var number = '';
        for(var i = 0;i<6;i++) {
            number += Math.floor(Math.random()*10);
        }
        console.log(number);
    </script>

最后

通过本文关于前端开发中JS生成32随机数的使用总结的介绍,如果认真阅读并且实践示例,尤其是从事前端开发不久的开发者来说尤为重要,是一篇值得阅读的文章,且在实际开发中也是必用知识点,所以说这个知识点是必备的,重要性就不在赘述。欢迎关注,一起交流,共同进步。

相关文章:

  • 第九届“数维杯”大学生数学建模挑战赛(B题)深度剖析|建模完整过程+详细思路+代码全解析
  • 【网站项目】SpringBoot379儿童疫苗接种管理系统
  • 探测器 烟尘水汽 笔记
  • Leetcode - 周赛397
  • Python专题:十七、做个小游戏
  • Invalid bound statement (not found) 六种解决方法
  • Ruoyi框架使用过程碰到的问题——请求地址‘/***/***‘,认证失败‘未能读取到有效Token‘,无法访问系统资源
  • 2024智慧城市革命:人工智能、场景与运营的融合之力
  • Linux:Ansible的常用模块
  • xtu oj 1131 凹数
  • 【手机端测试】adb基础命令
  • mybatis---->tx中weekend类
  • Linux-vim使用
  • osqp的原理ADMM(交替方向乘子法)理解
  • 远程代码执行漏洞
  • 自学软件测试?先学完这些就已经够了....
  • 2.2 Pycharm 的使用
  • 云原生架构下的日志收集模式
  • 上午还在办公室敲代码,下午就领取了n+1大礼包。现在功能测试的出路在哪里?
  • Tomcat的下载、安装和使用(超详细讲解)
  • 【C++】set和map
  • Jetson Orin 平台相机调试报四次“err_data” 后stream stop,其它平台工作正常
  • 【工具】Git-码农“吃饭的碗”要拿好
  • pytest fixture及conftest详解一 (各个参数的使用说明)
  • MySQL 一键卸载
  • AI二次开发C#图形样式
  • 项目实战(管理员管理(续),Spring Security框架)
  • JS原型概念讲解
  • 【REST系列】详解REST架构风格 —— 带你阅读Web发展史上的一个重要技术文献
  • 用C++写了基于gec6818开发板上LCD操作的一个类--附带注释(详细)
  • 3、spring cloud 五大组件
  • Redis_在Windows上启动多个Redis服务端