我正在编写执行以下操作的应用程序:
我试过了:
function my_doubt()
{
var place = document.getElementById("my_div")
place.innerHTML=Math.floor((Math.random()*100)+1);
}
我正在使用Math.random()
获得随机数。但是,我对如何为每天生成不同的数字毫无头绪。解决这个问题的常用方法有哪些?
注意:它不必是真正随机。伪随机数也可以。
答案 0 :(得分:2)
您需要使用从当前日期派生的数字seed the random number generator,例如今天的“20130927”。
答案 1 :(得分: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.
答案 2 :(得分:0)
1)在javascript中创建一个随机数
2)存储在cookie中,将在一天后过期
3)从cookie获取值,如果它不存在goto 1
答案 3 :(得分:0)
现在你的问题更合理,更清晰,更好。我可以给你一个在客户端获得相同结果的方法。但是,正如其他人所提到的,为了保持一致性,您可能希望在服务器上保留数字以确保一致性。
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