勝算を求める計算方法について
jsである特定の条件時に勝算を求める場合の計算方法について
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
勝率の計算式がかかれていますが、『ユーザーが入力した数値を1000回連続使用した場合の結果』については出力ができているのですか?
2018/05/17 09:15
質問と直接関係ありませんが、こちらの問題はどちらから参照しているのでしょうか?もし、よろしければ、サイト名などを教えて頂きたいです。面白そうですので、僕も解いてみたいです。
回答1件
0
ベストアンサー
私は、数学が得意でないため、自信がありませんが
例えば
試行回数が1000回で
ストレート当選が10回の場合
10/1000 * 100 = 1(%)
だと思いましたが、いかがでしょうか。
つまり、
当選回数/試行回数 * 100
です。
それを元にコードを編集いたしました。
jsのみ編集いたしました。
ご希望の動作になっていますでしょうか。
※間違えていましたら、ご指摘ください。
javascript
1//ストレートの当選確率dom 2var $winning_probability1 = document.getElementById('winning_probability1'); 3//ボックスの当選確率dom 4var $winning_probability2 = document.getElementById('winning_probability2'); 5//はずれの確率dom 6var $winning_probability3 = document.getElementById('winning_probability3'); 7//試行回数 8const trials_num = 1000; 9//COMがランダムな値を得るために利用する配列 10var rand_seeds = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 11 12 13//ユーザーが数値を入力した値が正しいかどうか(1) 14function num1() { 15 var inNum1 = document.getElementById('inNum1'); 16 if (inNum1.value.match(/^[0-9]{1}$/)) { 17 console.log(inNum1.value); 18 inval.innerHTML = ""; 19 } 20 else { 21 alert('入力した値は使用できません'); 22 inval.style.color = "red"; 23 inval.innerHTML = "0~9の半角数字1桁を入力してください"; 24 } 25} 26//ユーザーが数値を入力した値が正しいかどうか(2) 27function num2() { 28 var inNum2 = document.getElementById('inNum2'); 29 if (inNum2.value.match(/^[0-9]{1}$/)) { 30 console.log(inNum2.value); 31 inval.innerHTML = ""; 32 } 33 else { 34 inval.style.color = "red"; 35 inval.innerHTML = "0~9の半角数字1桁で入力してください"; 36 } 37} 38//ユーザーが数値を入力した値が正しいかどうか(3) 39function num3() { 40 var inNum3 = document.getElementById('inNum3'); 41 if (inNum3.value.match(/^[0-9]{1}$/)) { 42 console.log(inNum3.value); 43 inval.innerHTML = ""; 44 } 45 else { 46 inval.style.color = "red"; 47 inval.innerHTML = "0~9の半角数字1桁で入力してください"; 48 } 49} 50//ストレート当選がどうか確かめるための関数 51const isStraight = ({userInput, cpuInput}) => { 52 return userInput.toString() === cpuInput.toString(); 53} 54//ボックス当選がどうか確かめるための関数 55const isBox = ({userInput, cpuInput}) => { 56 return userInput.sort().toString() == cpuInput.sort().toString(); 57} 58//「当選表示」をクリックしたらの処理 59function check1() { 60 if (inNum1.value === "" || inNum2.value === "" || inNum3.value === "") { 61 inval.style.color = "red"; 62 inval.innerHTML = "値をそれぞれ入力してから実行してください"; 63 } 64 //ユーザーが入力した値をUSER:に表示させる 65 var userInput = []; 66 for (let i = 0; i < 3; i++) { 67 userInput[i] = document.getElementById('display' + (i + 1)).value = 68 document.getElementById('inNum' + (i + 1)).value; 69 } 70 //当選回数カウント用オブジェクト 71 const win_cnt = {straight: 0, box: 0, miss: 0}; 72 var cpuInput = [0, 0, 0]; 73 for (let i = 0; i < trials_num; i++) { 74 //COMの値をrandomに取得し出力する 75 for (let j = 0; j < 3; j++) { 76 cpuInput[j] = rand_seeds[Math.floor(Math.random() * rand_seeds.length)]; 77 // COMの値を出力しても目で追えるスピードでないため、コメントアウト。 78 // document.getElementById('display' + (i + 4)).value = cpuInput[i]; 79 } 80 if (isStraight({userInput, cpuInput})) { 81 // 結果がストレート当選の場合 82 83 // チェック用(結果を確かめる時に使用してください。) 84 // console.log(`結果:ストレート当選 ユーザ:${userInput} COM:${cpuInput}`) 85 win_cnt.straight++; 86 } 87 else if (isBox({userInput, cpuInput})) { 88 // 結果がボックス当選の場合 89 90 // チェック用(結果を確かめる時に使用してください。) 91 // console.log(`結果:ボックス当選 ユーザ:${userInput} COM:${cpuInput}`) 92 win_cnt.box++; 93 } 94 else { 95 // 結果がハズレの場合 96 97 // チェック用(結果を確かめる時に使用してください。) 98 // console.log(`結果:ハズレ ユーザ:${userInput} COM:${cpuInput}`) 99 win_cnt.miss++; 100 } 101 } 102 console.log(win_cnt) 103 $winning_probability1.innerHTML = `確率:${win_cnt.straight / trials_num * 100}%` 104 $winning_probability2.innerHTML = `確率:${win_cnt.box / trials_num * 100}%` 105 $winning_probability3.innerHTML = `確率:${win_cnt.miss / trials_num * 100}%` 106} 107
投稿2018/05/17 17:13
総合スコア210
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。