2017-05-16 12 views
1

Javascriptの乱数ジェネレータに問題があります。私は小さなサイコロを作ろうとしています。これは、サイコロを何度も転がすことなく、誰が勝利したかを知ることがより速くなります。あなたはサイコロを2回投げて比較します。Javascript:乱数ジェネレータは常に同じ数字を表示します

しかし、「キラー」は常に勝ち、引き分けがあります。生存者は決して勝てない(おそらく30のうち1回?)。これは私が持っているコードです:

<!DOCTYPE html> 
<html> 
<head> 
    <title>DBD Game Random Factor Generator</title> 
    <script> 

     function CalcChase() { 
      killer = 0 ; 
      surv = 0 ; 
      chase = 0 ; 
      killer1 = Math.floor(Math.random() * 12); 
      killer2 = Math.floor(Math.random() * 12); 
      killer3 = Math.floor(Math.random() * 12); 
      killer4 = Math.floor(Math.random() * 12); 
      killer5 = Math.floor(Math.random() * 12); 
      surv1 = Math.floor(Math.random() * 12); 
      surv2 = Math.floor(Math.random() * 12); 
      surv3 = Math.floor(Math.random() * 12); 
      surv4 = Math.floor(Math.random() * 12); 
      surv5 = Math.floor(Math.random() * 12); 
      var res1, res2, res3, res4, res5 ; 

      if (killer1 > surv1) { 
       res1 = "killer"; 
       killer++; 
      } else if (killer1 = surv1){ 
       res1 = "draw"; 
       chase++; 
      } else { 
       res1 = "survivor"; 
       surv++; 
      } 

      if (killer2 > surv2) { 
       res2 = "killer"; 
       killer++; 
      } else if (killer2 = surv2){ 
       res2 = "draw"; 
       chase++; 
      } else { 
       res2 = "survivor"; 
       surv++; 
      } 

      if (killer3 > surv3) { 
       res3 = "killer"; 
       killer++; 
      } else if (killer3 = surv3){ 
       res3 = "draw"; 
       chase++; 
      } else { 
       res3 = "survivor"; 
       surv++; 
      } 

      if (killer4 > surv4) { 
       res4 = "killer"; 
       killer++; 
      } else if (killer4 = surv4){ 
       res4 = "draw"; 
       chase++; 
      } else { 
       res4 = "survivor"; 
       surv++; 
      } 

      if (killer5 > surv5) { 
       res5 = "killer"; 
       killer++; 
      } else if (killer5 = surv5){ 
       res5 = "draw"; 
       chase++; 
      } else { 
       res5 = "survivor"; 
       surv++; 
      } 

      document.getElementById("chase1").innerHTML = "<table><tr><td>" + killer1 + "</td><td> - </td><td>" + surv1 + "</td><td>" + res1 + "</td></tr><tr><td> " + killer2 + "</td> <td> - </td> <td>" + surv2 + "</td><td>" + res2 + "</td></tr><tr><td> " + killer3 + "</td> <td> - </td> <td>" + surv3 + "</td><td>" + res3 + "</td></tr><tr><td> " + killer4 + "</td> <td> - </td> <td>" + surv4 + "</td><td>" + res4 + "</td></tr><tr><td> " + killer5 + "</td> <td> - </td> <td>" + surv5 + "</td><td>" + res5 + "</td></tr> </table>" + "<p>" + "killer: " + killer + "<br>survivor: " + surv + "<br>chase: " + chase ; 

     } 
    </script> 
</head> 
<body> 

    <button onclick="CalcChase()">Try it</button> 

    <p id="chase1">Results of the game.</p> 

</body> 
</html> 

私がキラーのための数を小さくしようとしましたが、何とかキラーはまだ勝利または引き分けがあります。読んでいただきありがとうございました。

+0

'killer1 = surv1'は' killer1 == surv1'である必要があります! –

+1

http://dilbert.com/strip/2001-10-25 – zerkms

+0

Math.floor(Math.random()* 12)は「サイコロを6回投げて2回投げていない」むしろ1つの12面のダイを投げている。 2つのダイスと同じ分布を得るには、 'Math.floor(Math.random()* 6)+ Math.floor(Math.random()* 6)'を使う必要があります。 (あなたの戦闘員が勝つ頻度に違いがあるわけではない) – Bergi

答えて

0

あなたは、例えば、代わりにあなたのelse if節で比較オペレータの代入演算子を使用していますここに:

} else if (killer1 = surv1){ 

これは次のようになります。

} else if (killer1 == surv1){ 

(ダブル等号に注意します)。あなたのコードでは、surv1の値でkiller1の値を上書きしています。値が0より大きい場合は、else ifブランチになります。偶然によってsurv1の値が0に等しい場合にのみ、elseブランチが使用されます。

+0

何とか私はいつもその間違いを犯す!!あなたは私の問題を解決しました、ありがとう!私は今から=と==を覚えておいてください:) –

関連する問題