この章では、コード例を通して簡単な 4 桁の乱数関数を実装する方法を紹介します。
これを実現する比較的簡単な方法は、数字と文字から反復しない 4 つの文字をランダムに選択することです。
コード例は次のとおりです:
function only(ele,arr){ if(arr.length==0){ return true; } for(var j=0;j<arr.length;j++){ if(ele==arr[j]){ return false; }else{ return true; } } } var arr=[0,1,2,3,4,5,6,"a","b","c","d","e","f","g"]; (function(){ var randNum=null; var old=[]; var str=""; function done(){ randNum=Math.floor(Math.random()*14); if(only(randNum,old)){ str=str+arr[randNum]; old.push(randNum); } else{ done(); } } for(var index=0;index<4;index++){ done(); } console.log(str); })(arr)
上記のコードは要件を満たしています。上記のコードの実装プロセスを紹介しましょう。
1. コードのコメント:
1.functiononly(ele,arr){}、この関数は、指定されたインデックスが使用されているかどうかを判断し、重複を避けるために乱数を配置できます。
2.if(arr.length==0){}、配列が空の場合、重複の可能性がないことを意味し、true を返します。
3.for(var j=0;j
6.var randNum=null、変数を宣言し、ランダムに生成された配列インデックスを格納するために使用される初期値を null に割り当てます。
7.var old=[]、すでに出現している配列インデックス値を格納する空の配列を作成します。
8.var str="" は、生成された乱数を格納する空の文字列を作成します。
9.function done(){}、この関数を使用して乱数を取得できます。
10.randNum=Math.floor(Math.random()*14)、配列のインデックス値を取得します。
11.if(only(randNum,old)){
str=str arr[randNum];
old.push(randNum);
}、使用されているかどうかを確認し、使用されていない場合は、配列要素を取得して str 文字列に追加し、最後にこのインデックス値を古い配列に追加します。
12.else{ 完了();
使用されている場合は、ここで再帰を使用して再度取得します。
13.for(varindex=0;index
完了();
}、for ループを使用して 4 つの乱数を取得します。
出典: http://www.softwhy.com/forum.php?mod=viewthread&tid=16493