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が追加されることがあることです。

2 番目の質問です。別の値をランダム化し、10 をランダム化する限り prev に追加する方法。例: 7x10 と 4 をランダム化し、それを配列に渡すと、数値 74 を取得できます。

while lop でやるべきだとわかっているのですが、solition を動作させることができなかったので、代わりに 'if' を入れました。

4

1 に答える 1

1

最初の問題は、各反復で制限をリセットしないことです。制限 10 から開始し、10 より大きい最初の数値が生成されると、制限が 20 に増加され、後続のすべての数値が 20 と比較されて、それらが配列に追加されるか再生成されるかが確認されます (そして、それらはすべてそれらはすべて 20 より小さいため、配列に追加されます)。

2番目の問題については、このコードがそれに応じて動作すると思います:

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 に答える