美文网首页javaScript学习web前端前端
js生成某个范围的随机整数

js生成某个范围的随机整数

作者: 爱扎马尾的小狮子 | 来源:发表于2017-12-18 14:14 被阅读14次

js没有提供一个现成的函数直接生成某个范围的随机数。
js只有一个Math.random() 函数返回一个浮点, 伪随机数在范围[0,1)。

我们只有利用Math.random() 函数,自己封装一些函数,实现生成某个范围的随机数。
实现生成某个范围色随机数也需要与一下函数配合使用:

Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入

一、以0~10为例理解生成某个范围的随机数

首先我们以0~10为例,对生成某一返回有一个简单的理解:
Math.random() * 10 会随机生成 [0,10),但是浮点数;

生成[0,10]的随机整数,Math.round(Math.random() * 10) ,通过四舍五入可以将大于9.5的数值转换为10;

生成[0,10)的随机整数,Math.floor(Math.random() * 10 );

生成(0,10]的随机整数,Math.ceil(Math.random() * 10 );

或者Math.round(Math.random() * 9 ) + 1 ,相当于[1,10],Math.round(Math.random() * 9 )相当于Math.round(Math.random() * 10 * (9/10) )生成的[0,9]范围的随机值,再加一个1,就是[1,10];
或者 var rand = Math.random(); Math.round(rand * 10 ) === 0 ? Math.round(rand * 10 ) + 1 : Math.round(rand * 10 ) ;Math.round(rand * 10 )生成[0,10]的随机数,但是做了一个判断,如果生成0,就转换成1;

生成(0,10)的随机整数,Math.round(Math.random() * 8) + 1,相当于[1,9],理解同上
或者var rand = Math.random(); Math.floor(rand * 10 ) === 0 ?(Math.floor(rand * 10 ) +1:(Math.floor(rand * 10 ) ;

二、生成随机整数的四种情况

归纳总结为一下四种情况:

1.min ≤ r ≤ max

实现函数如下:

function Random(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}

2.min﹤r ≦ max

function Random(min, max) {
    return Math.ceil(Math.random() * (max - min)) + min;
}

function Random(min, max) {
    return Math.round(Math.random() * (max - min)) === 0? (min+1):Math.round(Math.random() * (max - min)) + min;
}

3.min≦ r ﹤ max

function Random(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
}

function Random(min, max) {
    return Math.round(Math.random() * (max - min)) === max ? (max-1):Math.round(Math.random() * (max - min)) + min;
}

4.min﹤ r ﹤ max

function Random(min, max) {
    return Math.floor(Math.random() * (max - min)) === min  ? (min + 1) : Math.floor(Math.random() * (max - min)) + min;
}

function Random(min, max) {
    return Math.floor(Math.random() * ((max-1) - (min+1))) + (min+1);相当于 min+1 ≤ r ≤ max - 1
}

相关文章

  • js生成某个范围的随机整数

    js没有提供一个现成的函数直接生成某个范围的随机数。js只有一个Math.random() 函数返回一个浮点, ...

  • JS 生成某个范围的随机整数

    首先要明确几个函数的用法: Math.random():返回一个随机数,范围是 [0, 1)Math.ceil()...

  • 生成某个范围随机整数

    var num=Math.floor(Math.random() * (最大值-最小值+1) + 最小值);

  • js生成随机整数

    基础1、Math.random(),其结果为 [0,1) 区间的随机小数。2、Math.floor(num),向...

  • Java数字处理工具类

    该工具类包含了如下功能: 生成四位随机整数 生成五位随机整数 生成六位随机整数 生成八位随机整数 加法、减法、乘法...

  • python必知必会6

    Python中生成随机整数、随机小数、0—1之间小数方法 生成随机整数使用random.randint()生成随机...

  • ITEM 59: 了解并运用库

    ITEM 59: KNOW AND USE THE LIBRARIES  假设你想在0和某个上界之间生成随机整数。...

  • js常用方法

    随机排序 生成随机范围内的数 用正则判断是否是小数; 可负数; 可整数, 不可以.结尾;function de...

  • iOS中的生成随机数方法

    生成0-x之间的随机正整数 intvalue=arc4random_uniform(x + 1); 生成随机正整数...

  • ios开发生成随机数

    生成0-x之间的随机正整数 intvalue=arc4random_uniform(x + 1); 生成随机正整数...

网友评论

    本文标题:js生成某个范围的随机整数

    本文链接:https://www.haomeiwen.com/subject/lsipwxtx.html