0

嗨,我有这样的代码:

 $('#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,只要它随机化 10。例如:所以当它随机化 7x10 和 4 时,它可以获得数字 74,然后将它传递到数组。

我知道我应该在 while lop 之前完成它,但我无法获得工作 solition,所以我改为输入“if”

4

1 回答 1

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),但我怀疑这是您真正需要的东西。

于 2013-09-11T09:51:29.953 回答