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

    原文作者:HelloHL
    原文地址: https://www.jianshu.com/p/f30cbefd14ed
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞