前提・実現したいこと
作成したfor文が上手く動かない(重くてChromeが固まる)ので、どこが間違っているのか教えていただきたいです。
前提
ユーザーが指定した数字とコンピュータが生成した数字(それぞれ6個、コンピュータのみランダム数字をとして+1個)がどれだけ一致するか、一致具合を確率で表示させるためのコードです(htmlでの確率の表示はfor文の外で行っています)。
int_user_array はユーザーが入力した数字を配列として、別の場所できちんと格納できています。
入れ子のfor文では、1~43のランダム数字を重複させずに配列に格納する処理を行っています。
発生している問題・エラーメッセージ
繰り返しの処理がどこかおかしく、膨大な回数が実行されているのかなと思うのですが、どこがおかしいかわからないです。
該当のソースコード
var win_count = {one: 0, two: 0, three: 0, four: 0, five: 0, lose: 0}; var traials_num = 100; var com_array = []; var min = 1, max = 43; var length = 7; function intRandom(min, max){ return Math.floor( Math.random() * (max - min + 1)) + min; } for(var j = 0; j < traials_num; j++){ for(var k = min; k <= length; k++){ while(true){ var tmp = intRandom(min, max); if(!com_array.includes(tmp)){ com_array.push(tmp); break; } } } // 一番後ろの数字をランダム数字として別枠に const random_num = com_array.pop(); // 配列の統合 var concat_array = int_user_array.concat(com_array); // 配列の重複削除 var delete_duplicate_array = Array.from(new Set(concat_array)); // 当たりチェック if(user_array.sort().join() == com_array.sort().join()){ win_count.one++; }else if(delete_duplicate_array.length == 7 && int_user_array.includes(random_num)){ win_count.two++; }else if(delete_duplicate_array.length == 7){ win_count.three++; }else if(delete_duplicate_array.length == 8){ win_count.four++; }else if(delete_duplicate_array.length == 9){ win_count.five++; }else{ win_count.lose++; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/01 07:06
退会済みユーザー
2021/05/01 08:49
退会済みユーザー
2021/05/01 08:55
2021/05/01 13:36 編集
退会済みユーザー
2021/05/01 14:37