JavaScript中的随机数每天一次
我正在编写一个执行以下操作的应用程序:JavaScript中的随机数每天一次,javascript,random,Javascript,Random,我正在编写一个执行以下操作的应用程序: 生成一个4位数的随机数 每个日历日更改一次 不会改变那一整天。一天只有一次 我试过: function my_doubt() { var place = document.getElementById("my_div") place.innerHTML=Math.floor((Math.random()*100)+1); } 我用Math.random()得到一个随机数。然而,我对如何为每天生成不同的数字一无所知。解决这个问题的常用方法有
function my_doubt()
{
var place = document.getElementById("my_div")
place.innerHTML=Math.floor((Math.random()*100)+1);
}
我用Math.random()
得到一个随机数。然而,我对如何为每天生成不同的数字一无所知。解决这个问题的常用方法有哪些
注意:它不一定是随机的。伪随机数也可以。您需要使用从当前日期派生的数字,例如今天的“20130927”。1)在javascript中创建一个随机数
2) 存储在一天后过期的cookie中
3) 从cookie中获取价值,如果它不存在,转到1您还不清楚自己的需求,因此我不知道您需要的随机性(您是否需要一个统一的分布?) 这将生成一个看似随机的4位数字,可能足以满足您的需求,但如果您进行分析,您会发现该数字实际上并不随机:
function rand_from_seed(x, iterations){
iterations = iterations || 100;
for(var i = 0; i < iterations; i++)
x = (x ^ (x << 1) ^ (x >> 1)) % 10000;
return x;
}
var random = rand_from_seed(~~((new Date)/86400000)); // Seed with the epoch day.
函数rand\u from\u seed(x,迭代次数){
迭代次数=迭代次数| | 100;
对于(var i=0;i1))%10000;
返回x;
}
var random=rand_from_seed(~(新日期)/86400000));//与大纪元一起播种。
现在你的问题更合理、更清晰、语气更优美了。我可以为您提供一种在客户端获得相同结果的方法。但是,正如其他人所提到的,为了保持一致性,您可能需要维护服务器上的号码以确保一致性
var oneDayInMs = 1000*60*60*24;
var currentTimeInMs = new Date().getTime(); // UTC time
var timeInDays = Math.floor(currentTimeInMs / oneDayInMs);
var numberForToday = timeInDays % 9999;
console.log(numberForToday);
// zero-filling of numbers less than four digits might be optional for you
// zero-filled value will be a string to maintain its leading 0s
var fourDigitNumber = numberForToday.toString();
while(fourDigitNumber.length < 4)
{
fourDigitNumber = 0+fourDigitNumber;
}
console.log(fourDigitNumber);
// remember that this number rotates every and is unique for 10000 days
var oneDayInMs=1000*60*60*24;
var currentTimeInMs=new Date().getTime();//UTC时间
var timeInDays=数学楼层(currentTimeInMs/oneDayInMs);
var numberForToday=timeInDays%9999;
控制台日志(编号为fortoday);
//小于四位数的数字的零填充可能是可选的
//零填充值将是一个字符串,以保持其前导0
var fourDigitNumber=numberForToday.toString();
while(fourDigitNumber.length<4)
{
fourDigitNumber=0+fourDigitNumber;
}
console.log(四位数);
//请记住,此数字每隔一天旋转一次,并且在10000天内是唯一的
您试过什么吗?你有任何示例代码吗?当然有可能。当服务器端解决方案(使用任何服务器端语言)更健壮、更易于实现时,为什么要在客户端执行此操作?我想要一辆法拉利F40。1.它一定是黄色的2。。。谢谢:)卡尔肖:我投反对票和反对票的原因是,你没有亲自尝试解决问题,没有充分说明你的要求(特别是你没有费心在评论中回答蒂洛的问题,尽管你已经看到了),你“伪造”了代码(可能是偶然的)通过将您的需求格式化为代码(它们实际上不是),并花时间显示一个购物清单,而不是一个编程问题。不会在不同的机器上工作(但不确定这是否是一个需求)。