如何获取一个范围内的随机整数

这是我在学JavaScript的一个课后作业。

利用Math.floor()来实现

// 利用 Math.random() 从某个整数范围内随机选择一个值
// 值 = Math.floor( Math.random()*可能值的总数 + 第一个可能的值 )
// 取一个 2 到 10 的整数(中间有9个整数)
var num = Math.floor( Math.random()*9 + 2 )
// 取一个 start 到 end 的整数
function getRandomNumber( start , end ){
    var choices = end - start + 1; // 取得从 start 到 end 所有整数的个数(包括 start 和 end )
    return Math.floor( Math.random()*choices + start );
}
var RandomNumber = getRandomNumber( 0 , 9 );
alert( RandomNumber );

为什么choices要加1?请往下面看

Math.random();                               //[0,1)
Math.random()*(end-start);                   //[0,end-start);
Math.random()*(end-start)+start;             //[start,end);
Math.floor(Math.random()*(end-start)+start); 
//{ x | x>=start,x<end,x∈N}
//如果不 +1 的话就取不到 end 了

为什么不用parseInt() ?

1、parseInt()接受的参数是字符串;
2、而 Math.random() 返回的是一个大于等于 0 ,小于 1 的数值,将数值传入 parseInt() 的时候,会将数字转换成字符串;
3、而在默认情况下,ECMAScript 会将那些小数点后面带有 6个零以上的浮点数值转换为以 e表示法 表示的数值。

alert( parseInt(0.00000001) )  // 1
/*
* 因为0.0000001被转换成字符串时变成"1e-8"
* 所以变成parseInt("1e-8")
* 这样的话输出整数的概率就不一定一样了
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值