qappleh / Interview

我是追梦赤子心,公众号「深圳湾码农」的作者,某上市集团公司高级前端开发,深耕前端领域多年,每天攻破一道题,带你从0到1系统构建web全栈完整的知识体系!
https://github.com/qappleh/Interview
1.14k stars 95 forks source link

Day374:已知函数fn1会随机返回1-5的整数,要求基于fn1编写fn2,要随机生成1-7,fn2内不能使用系统的随机api,只能调用fn1获取随机数? #377

Open qappleh opened 3 years ago

zjfresh commented 3 years ago

首先联想到的方法是: Math.random() 0-1随机数扩大成0-n,n-m那种扩列方式

但后看fn1是返回1-5的整数,所以这个方法不可行

则() -> 1-5 与 () -> 1-7 如何产生关联/共同之处呢,fn1() 一个只有1-5,两个只有2-10,顺序下去,联想到公约数那种概念,即5*7=35,则35是拥有两者

则对照到fn1,fn1() ** 7 = 1-35

得到fn2() { let n = 7 let res = 0 for(let i = 0; i < n;i++) res += fn1() return res/n }