2016-03-29 4 views
-1

私は0から30までの10個の乱数のリストをJavascriptで取得しようとしています。
これまでのところとても良いですが、私は特定の数字(0,5,10,11,12,13,15,16,17,18,20,22,23)の別のリストを持っています。
最大このリストの4つの数字は、ランダム配列で許されます。私はこれを組み合わせることを考えていないので、私は狂っています。Javascript乱数は特定のリストにない重複していません

私は何か助けに感謝します。ありがとうございました。ルックアップと

<script language="JavaScript" type="text/javascript"> 
<!--  

function random(min, max, i, filter) { 
    var array = {}; 
    var zufall = []; 
    while(i) { 

    var rnd = Math.floor(Math.random() * (max - min + 1)) + min; 
    if(!array[rnd]) { 
     array[rnd] = true; 
     i--; 
     zufall.push(rnd); 
    } 
    } 
    return zufall; 
} 

var filter = new Array(0,5,10,11,12,13,15,16,17,18,20,22,23); 

console.log("Random: " + random(0,30,10,filter)); 

//--> 
</script> 
+0

? –

+2

'rnd'が' filter'にあるかどうかを確認し、そこに何個あるかのカウンタを保持しますか? –

+0

申し訳ありません、重複はありません。 – Tobias

答えて

1

提案:

は、ここに私のコードです。繰り返しの有無にかかわらず

function random(min, max, i, filter) { 
 
    var result = [], 
 
     filterCount = 0, 
 
     rnd; 
 

 
    while (i) { 
 
     rnd = Math.floor(Math.random() * (max - min + 1)) + min; 
 
     if (~result.indexOf(rnd)) { 
 
      continue; 
 
     } 
 
     if (~filter.indexOf(rnd)) { 
 
      if (filterCount >= 4) { 
 
       continue; 
 
      } 
 
      filterCount++; 
 
     } 
 
     result.push(rnd); 
 
     i--; 
 
    } 
 
    return result; 
 
} 
 

 
var filter = [0, 5, 10, 11, 12, 13, 15, 16, 17, 18, 20, 22, 23], 
 
    zufall = random(0, 30, 10, filter);  
 

 
document.write('<pre>' + JSON.stringify(zufall, 0, 4) + '</pre>');

+1

ありがとうニーナ、thats it。正常に動作します! – Tobias

関連する問題