Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在经常调用的函数(Javascript)中获取粘性随机数_Javascript_Random - Fatal编程技术网

在经常调用的函数(Javascript)中获取粘性随机数

在经常调用的函数(Javascript)中获取粘性随机数,javascript,random,Javascript,Random,我正在制作一个猜测数字机器,由一本书《傻瓜html5游戏编程》支持。我被困在调用随机数的函数中 我试着把它放在函数之外,但这不起作用,因为当没有轮次时,数字不会刷新。我还尝试将它放在我的第一个if语句中,因此它将仅在第一次调用,但这会给出一个未定义的错误。谁能帮我 代码: 另外,我的代码也没有真正优化。有没有优化我的代码的技巧?非常感谢 我花了一点时间才弄明白你在问什么,但我想这就是你想要的答案 在函数外添加此行 var turns = 3; var randNum = Math.round(M

我正在制作一个猜测数字机器,由一本书《傻瓜html5游戏编程》支持。我被困在调用随机数的函数中

我试着把它放在函数之外,但这不起作用,因为当没有轮次时,数字不会刷新。我还尝试将它放在我的第一个if语句中,因此它将仅在第一次调用,但这会给出一个未定义的错误。谁能帮我

代码:


另外,我的代码也没有真正优化。有没有优化我的代码的技巧?非常感谢

我花了一点时间才弄明白你在问什么,但我想这就是你想要的答案

在函数外添加此行

var turns = 3;
var randNum = Math.round(Math.random()*100); // This one

function Guess() {
    // ...
然后在函数的末尾:

    } else {
        output.innerHTML = 'The number is '+randNum+'. You lost!';
        turns = 3;
    }
    randNum = Math.round(Math.random()*100); // This one
}

现在,在加载文档时设置一个随机数,并将其作为函数可以访问的全局变量。用户尝试3次猜测1到100之间的数字,这是一个非常不合理的挑战,然后当他们的“圈数”用完时,randNum将重置为一个新的随机数,以便用户继续猜测。

我将您的函数“guess”重命名为“checkAnswer”,因为这更合适。也可以把它缩短很多

var maxNum = 100;
var maxTurns = 3;
var turn = 1;
var ans;
var randNum = Math.round(Math.random()*maxNum);

var input = document.getElementById('input').value;
var output = document.getElementById('output');

function checkGuess(){
    if(input == randNum) {
        ans = 'Congratulations! Thats the right answer!';
        turn = 1;
        randNum = Math.round(Math.random()*maxNum);
    } else if (turn == maxTurns){
        ans = 'The number is ' + randNum + '. You lost!';
        turn = 1;
        randNum = Math.round(Math.random()*maxNum);
    } else if (input > randNum) {
        ans = 'The number is lower!';
        turn++;
    } else {
        ans = 'The number is higher!';
        turn++;
    }
    output.innerHTML = ans;
}

你是在问是否有办法在函数再次运行时保存随机数?没错!我想保存该号码,并在turns==3谢谢时刷新它!你在这里给我的结构帮了我很大的忙。你给我的代码不起作用,而且没有定义,但我用正确的方式自定义了它。是的,这不是一个很好的挑战,但我只是跟着书的练习。对了,很抱歉我的解释不好。谢谢你的回复!很好,你缩短了这个代码,但它尝试了,它不适合我。让我们看看。。。也许这是一些随机的东西,我曾经也有过这样的问题。顺便说一句:如果您注意到代码中的内容非常重复,请尝试将其打包到函数中,或者添加参数。就像我在那里做的那样。您将得到更可读的代码。另一件事:你必须在胜负案例中将“回合数”设置为4,因为不必要的“回合数-;”。这里有一个小小的复制粘贴错误:DYeah,我还在学习javascript,让我的代码有条理、可读性对我来说非常重要。谢谢你的帮助!我会提到你的建议并使用它们。
var maxNum = 100;
var maxTurns = 3;
var turn = 1;
var ans;
var randNum = Math.round(Math.random()*maxNum);

var input = document.getElementById('input').value;
var output = document.getElementById('output');

function checkGuess(){
    if(input == randNum) {
        ans = 'Congratulations! Thats the right answer!';
        turn = 1;
        randNum = Math.round(Math.random()*maxNum);
    } else if (turn == maxTurns){
        ans = 'The number is ' + randNum + '. You lost!';
        turn = 1;
        randNum = Math.round(Math.random()*maxNum);
    } else if (input > randNum) {
        ans = 'The number is lower!';
        turn++;
    } else {
        ans = 'The number is higher!';
        turn++;
    }
    output.innerHTML = ans;
}