[笔记][JavaScript]用Math.random()取得某区间内的随机乱数

HI大家好我来填上一次[笔记][JavaScript]用Math.random()取得乱数的技巧留下的坑惹,上一篇最后实做出来的funciton是用来取得1~x间的乱数,这一篇就来提一下要如何做出取得x~y之间的乱数吧!

首先複习一下上一篇最后实做出来的function

function getRandom(x){    return Math.floor(Math.random()*x)+1;};

以上是产生1~x之间的乱数,也就是说x是区间内的最大值,1则是区间内的最小值,我们就可以把这个function改写成以下方式:

//以下function多了一个参数min代替了原本区间内的最小值1,而原本的最大值x则是改成了参数maxfunction getRandom(min,max){    return Math.floor(Math.random()*max)+min;};

上面的function是以上一次的结果去改良的,让乱数乘上最大值去无条件捨去,但是得到的最小值会是0,所以最后我们在加上min,让最小值变成(0+min),But!!!!写程式最重要的就是这个But还有那个Bug,因为我们后面加上min的关係,Math.floor(Math.random()*max)的最大结果max-1也会是加上min,所以他这个函数产生乱数的区间会变成「(0+min)~(max-1+min)」,既然知道最大值Math.random()*max无条件捨去后他会少了1和多了min,那我们只需要在无条件捨去前先为他加上1和减去min变成Math.random()*(max-min+1),接着把他写进function中就能得到我们要的了:

//产生min到max之间的乱数function getRandom(min,max){    return Math.floor(Math.random()*(max-min+1))+min;};//会产生1~5之间的随机乱数getRandom(1,5);//会产生20~500之间的随机乱数getRandom(20,500);//也可以用迴圈测试看看!var arr = [];for(i=1;i<=10;i++){arr.push(getRandom(1,10));};//arr大概会是这个样子//[10, 3, 6, 7, 10, 1, 6, 7, 5, 8]

以上就是用区间条件来产生乱数的function!
参考文章:https://gist.github.com/kerimdzhanov/7529623

如果我有观念错误或解释不清楚的地方,还麻烦各位大大指点了,谢谢大家!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章