• JS生成指定范围内的随机数(支持随机小数)


    JS生成指定范围内的随机数(支持随机小数)

    直接需要函数的话,直接到文章的最后面找。

    =============================================================

    一、预备知识 

    Math.ceil(n);  //向上取整。返回大于等于n的最小整数。

    Math.floor(n);  //向下取整。返回为n的整数部分。

    Math.round(n);  //四舍五入。返回为n四舍五入后的整数。

    Math.random(n);  //0.0 ~ 1.0 之间的一个伪随机数。【包含0,不包含1】 //比如0.8647578968666494

    Math.ceil(Math.random()*10);      // 获取从1到10的随机整数 ,取0的概率极小。

    Math.floor(Math.random()*10);    //可均衡获取0到9的随机整数

    Math.round(Math.random());   //可均衡获取0或1的随机整数。(因为random()生成的是0-1的数,四舍五入后只有0或1)

    Math.round(Math.random()*10);  //基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半

    因为结果在0~0.4 为0,0.5到1.4为1...8.5到9.4为9,9.5到9.9为10。所以头尾的分布区间只有其他数字的一半。

    二 、生成[n,m]的随机整数

    函数功能:生成[n,m]的随机整数。

    在js生成验证码或者随机选中一个选项时很有用。。

    复制代码
    复制代码
    //生成从minNum到maxNum的随机数
    function randomNum(minNum,maxNum){ 
        switch(arguments.length){ 
            case 1: 
                return parseInt(Math.random()*minNum+1,10); 
            break; 
            case 2: 
                return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); 
            break; 
                default: 
                    return 0; 
                break; 
        } 
    } 
    复制代码
    复制代码

     过程分析:

    Math.random()生成[0,1)的数,所以

    Math.random()*5生成[0,5)的数。

    通常期望得到整数,所以要对得到的结果处理一下。

    parseInt(),Math.floor(),Math.ceil()和Math.round()都可得到整数。

    但是parseInt()和Math.floor()结果都是向下取整。

    所以Math.random()*5生成的都是[0,4] 的随机整数。

    所以生成[1,max]的随机数,公式如下:

    // max - 期望的最大值
    parseInt(Math.random()*max,10)+1;
    Math.floor(Math.random()*max)+1;
    Math.ceil(Math.random()*max);

    所以生成[0,max]到任意数的随机数,公式如下:

    // max - 期望的最大值
    parseInt(Math.random()*(max+1),10);
    Math.floor(Math.random()*(max+1));

    所以希望生成[min,max]的随机数,公式如下:

    // max - 期望的最大值
    // min - 期望的最小值
    parseInt(Math.random()*(max-min+1)+min,10);
    Math.floor(Math.random()*(max-min+1)+min);

    因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处,有问题欢迎与我讨论,共同进步。

    本文作者:starof

    出处:http://www.cnblogs.com/starof/p/4988516.html 

  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/2019gdiceboy/p/14356565.html
Copyright © 2020-2023  润新知