骰子随机值1到10并在Javascript中推翻

时间:2013-09-11 09:26:49

标签: javascript jquery math random

您好我有这样的代码:

 $('#Generator_Rzutow').click (function(){
    var val1 = $('#rzucane').val();
    var val2 = $('#zachowywane').val();
    var zbior = [];
    var limit = 10;
    alert (val1);
    alert (val2); 
    for (var i=0; i<val1;i++){
        var wynik_rzutu = 1+Math.floor(Math.random()*10);
        if (wynik_rzutu<limit){
            zbior.push(wynik_rzutu);
            } else {
                    limit = limit+10;
                    wynik_rzutu = wynik_rzutu+1+Math.floor(Math.random()*10);
                    if (wynik_rzutu<limit){
                zbior.push(wynik_rzutu);
                } else {
                        limit = limit+10;
                        wynik_rzutu = wynik_rzutu+1+Math.floor(Math.random()*10);
                        zbior.push(wynik_rzutu);
                    }
            }
        }
    $('#wypisz').text (zbior);  
  });

我的问题是,当它为'10'时,它有时会向数组添加10,当它应该随机化另一个时间并将其添加到prev值时。

我的第二个问题是。如何让它随机化另一个值并将其广告为prev,只要它随机化10个。对于ex:所以它可以得到数字74,当它随机化7x10和4,然后它通过它到数组。

我知道我应该在垂坠的时候做到这一点,但我无法解决问题,所以我把'if'

1 个答案:

答案 0 :(得分:1)

第一个问题是您不会在每次迭代时重置限制。您从限制10开始,然后当生成大于10的第一个数字时,限制将增加到20,并且所有后续数字将与20进行比较,以查看它们是否已添加到阵列中或重新生成(并且它们将全部生成被添加到数组中,因为它们都小于20)。

关于你的第二个问题,我认为这段代码的行为是相应的:

for (var i=0; i<val1;i++){
  var wynik_rzutu = 0, limit = 0;
  while (wynik_rzutu >= limit) {
    wynik_rzutu += 1+Math.floor(Math.random()*10);
    limit += 10;
  }
  zbior.push(wynik_rzutu);
}

您还可以添加一个计数器以防止它进入无限循环(例如,如果Math.random()总是返回0.9),但我怀疑它是您真正需要的。