用JavaScript生成随机间隔打印的随机数
我正在尝试使用Math.random()生成随机数,这些随机数以随机间隔记录/写入 我写了以下内容:用JavaScript生成随机间隔打印的随机数,javascript,recursion,random,Javascript,Recursion,Random,我正在尝试使用Math.random()生成随机数,这些随机数以随机间隔记录/写入 我写了以下内容: function ranNum () { setInterval( function () { var myNum = Math.round(Math.random()*100000); document.write(myNum+' '); return myNum; }, ranNum) } ranNum(); 但间隔不是随机的,事实上它们似乎是零或零,因为有无穷的数字
function ranNum () {
setInterval( function () {
var myNum = Math.round(Math.random()*100000);
document.write(myNum+' ');
return myNum;
}, ranNum)
}
ranNum();
但间隔不是随机的,事实上它们似乎是零或零,因为有无穷的数字打印。。。我猜不可能调用ranNum函数的新实例,因此setInterval的第二个参数要么为0,要么始终相同
我被告知递归将是这里的解决方案,但未能实现它。正如monkeyinsight指出的,使用
setTimeout
:
function ranNum () {
setTimeout( function () {
var myNum = Math.round(Math.random()*100000);
document.write(myNum+' ');
ranNum(); //This makes the function call `recursive` (in a broad sense)
return myNum;
}, Math.round(Math.random()*10000) // The function in the setTimeout will be called in 0-10000ms
);
}
ranNum();
如果需要随机间隔,请使用重复的
setTimeout
<代码>设置间隔仅在同一间隔重复
function ranNum () {
schedule();
function schedule() {
setTimeout(go, Math.random() * 10000);
}
function go() {
var myNum = Math.round(Math.random()*100000);
document.write(myNum+' ');
schedule();
// No return, it doesn't make any sense to return something from a timer function
}
}
旁注:您不需要
文档。为此编写。您的文档将被文档替换。请在第一次计时器函数调用后写入。相反,使用现代DOM技术,如appendChild
或insertAdjacentHTML
var计数器=20;
函数ranNum(){
附表();
功能表(){
setTimeout(go,Math.random()*10000);
}
函数go(){
var myNum=Math.round(Math.random()*100000);
显示(myNum+“”);
如果(--counter>0){//对于代码段,请在20之后停止
附表();
}
//不返回,从计时器函数返回内容没有任何意义
}
}
功能显示(msg){
document.body.insertAdjacentHTML(“beforeend”,msg);
}
ranNum()代码>使用setTimeout
而不是setInterval
我能随机分配间隔时间吗?谢谢,不用担心文档。写,这不是一个真实的项目,我只是用它来代替控制台。日志:)我选择你的答案是因为它更接近我的代码/递归,即使另一个看起来更可靠。。