私はランダムな数学的問題(簡単な質問)を作成するスクリプトに取り組んでいます。問題は、無限ループが発生しているようで、コードのこの部分がなくてもどこでどのようにスクリプトを実行できるのか分かりません。乱数を生成する無限ループですか?
https://codepen.io/abooo/pen/GyJKwP?editors=1010
var arr = [];
var lastArr = [];
while(lastArr.length<122){
arr.push('<br>'+Math.round(Math.random() * 10)+'+'+Math.round(Math.random() * 10)+'=');
lastArr=removeDuplicates(arr);
}
document.write(lastArr.join(' '));
alert(arr.length);
function removeDuplicates(arr){
let unique_array = []
for(let i = 0;i < arr.length; i++){
if(unique_array.indexOf(arr[i]) == -1){
unique_array.push(arr[i])
}
}
return unique_array
}
はい、inifiteループが、非常にlooooooongループはありません。重複を削除していますが、最大121の異なるオプションしか存在しません。したがって、1から121までのすべての乱数を見つけたら、終了することができます。これは非常に小さなチャンスです。だからそこに着くには長い時間がかかります。私はあなたがマルコフチェーンを行う必要が実際のチャンスを計算すると信じて –
あなたの問題は、理論的に無限ループが可能であるときにあなたが乱数に頼っているとき、コードペンは実行を停止することによって何かばかげた –
また、セットを使用して調べます。それはユニークな値を格納するように設計されています –