js 生成随机数(不使用Math.random())

朋友问了我一道面试题,如下:

实现一个返回随机数的函数,要求如下:
1.不可以使用Math.random()
2.有一个函数 Rand() 返回1-5的随机数

想了很久除了获取时间的毫秒数外,我没法用一个固定的代码区生成会变动的数据,但根据毫秒数怎么获取一个足够随机的数值我不知道怎么处理了,多方查证下找到如下代码:

rand = (function(){
var today = new Date();
var seed = today.getTime();
function rnd(){
seed = ( seed * 9301 + 49297 ) % 233280;
return seed / ( 233280.0 );
};
return function rand(number){
return Math.ceil(rnd() * number);
};
})();
myNum = (rand(5));

不知道怎么加入空格或者引用代码,有知道的朋友可以告诉我

至于为什么是9301、49297、233280这几个数字,有兴趣的朋友可以去知乎

我的理解是,利用这个几个数字将毫秒数变得足够随机,然后使用进一法将其变为整数,至于为何是进一法,因为题目要求是1-n,而不是0-n

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容