如何修正JavaScript随机年份生成代码以获取1900-2018数值?
修正随机年份生成函数的问题
嘿,我一眼就看出问题出在你的getNumber函数逻辑上啦!当前的写法根本没办法生成你想要的1900~2018区间的数值,咱们来一步步解决:
问题根源
你现在的getNumber函数是这么写的:
function getNumber(start, end) { return Math.floor(Math.random() * end) + start; }
这个逻辑会生成从start到start + end之间的随机数(比如你传1900和2018,会得到1900~3918的数),完全偏离了你要的区间。
正确的随机整数生成公式
要生成**包含两端的闭区间[min, max]**的随机整数,正确的公式是:
Math.floor(Math.random() * (max - min + 1)) + min
解释一下:
max - min + 1是区间内的总整数个数(比如2018-1900+1=119个数)Math.random() * 总数会得到0到总数(不包含总数)的随机浮点数- 用
Math.floor()取整后得到0到总数-1的整数 - 最后加上
min,就把范围平移到了min到max的区间
修正后的完整代码
把getNumber函数改成下面这样就可以了:
function getNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function generate(n){ var result = []; for(let i = 0; i < n; i++){ let YEAR = getNumber(1900,2018); result.push(YEAR); } console.log(result); } generate(10);
现在调用generate(10),就能得到10个1900到2018之间(包含1900和2018)的随机年份啦!
内容的提问来源于stack exchange,提问作者kyun
相关产品推荐
相关产品推荐

