JSは無作為に3人を抽出することを実現します。
実験室は週に3人がレポートをするので、JSでランダムに抽出したページを作ります。
まず、需要について話してください。研二さんは5人で、一人は単独のグループで、研一さんは全部で9人です。したがって、8つのグループで、毎週報告されている3人は8つのグループから抽出されます。この3人は2人または2人以上が同じグループにいてはいけません。
プログラムの考え方1
1.研一の3つのグループを3つの小さな配列にし、この3つの配列の中からランダムに1人を抽出する。
2.第一歩から抽出した三人と研二の五人を合わせて、新しい配列を作って、その中からランダムに三人を抽出します。
3.ランダムに抽出した三人が上記の状況がある場合、第一歩を返して、第二ステップが存在しない場合までランダムに抽出し、出力する。
プログラム思考2
実験室のすべての人を大きな行列に入れて、まず配列からランダムに三人を抽出します。
研一の三組を三つの小さい行列にして、ランダムに抜き出した三人を循環して、二人或いは二人以上が同じグループにいるかどうかを判断します。
最後に実現する
もともとは考えが一番いいと思っていましたが、後から同じグループかどうかを判断してから関数の運行を再開します。いつも問題が発生します。選んだ三人はfor循環で判断します。理論はいいですが、実現できません。もう少し詳しく考えてみます。考え方の手順は次の通りです。
まず、需要について話してください。研二さんは5人で、一人は単独のグループで、研一さんは全部で9人です。したがって、8つのグループで、毎週報告されている3人は8つのグループから抽出されます。この3人は2人または2人以上が同じグループにいてはいけません。
プログラムの考え方1
1.研一の3つのグループを3つの小さな配列にし、この3つの配列の中からランダムに1人を抽出する。
2.第一歩から抽出した三人と研二の五人を合わせて、新しい配列を作って、その中からランダムに三人を抽出します。
3.ランダムに抽出した三人が上記の状況がある場合、第一歩を返して、第二ステップが存在しない場合までランダムに抽出し、出力する。
プログラム思考2
実験室のすべての人を大きな行列に入れて、まず配列からランダムに三人を抽出します。
研一の三組を三つの小さい行列にして、ランダムに抜き出した三人を循環して、二人或いは二人以上が同じグループにいるかどうかを判断します。
最後に実現する
もともとは考えが一番いいと思っていましたが、後から同じグループかどうかを判断してから関数の運行を再開します。いつも問題が発生します。選んだ三人はfor循環で判断します。理論はいいですが、実現できません。もう少し詳しく考えてみます。考え方の手順は次の通りです。
for (var i=0;i<3;i++) {
index1 = Math.round(Math.random()*(array.length-1));
value = array[index1];
newarray.push(value);
array.splice(index1,1);
value ='';
}
console.log(newarray);
for (var j =0;j<newarray.length;j++) {
for (var m = 0; m < arr1.length; m++) {
if (newarray[j] === arr1[m]){
num1++;
}
}
for (var n = 0; n < arr2.length; n++) {
if (newarray[j] === arr2[n]){
num2++;
}
}
for (var o = 0; o < arr3.length; o++) {
if (newarray[j] === arr3[o]){
num3++;
}
}
}
btn.onclick = function (){
var id = setInterval(frame,500);
function frame() {
if (!flag) {
clearInterval(id);
flag=true;
} else {
Begin();
document.getElementById("name").innerHTML="";
for (var i = 0; i < newarray.length; i++) {
document.getElementById("name").innerHTML += newarray[i] + "</br> ";
}
flag=false;
newarray=[];
}
}
}
この中にはまだいくつかの問題があります。構想二は正常に実現できます。次に構想二のプログラムです。
function Begin() {
num1 = Math.round(Math.random() * (arr4.length - 1));
num2 = Math.round(Math.random() * (arr4.length - 1));
num3 = Math.round(Math.random() * (arr4.length - 1));
Begin2();
}
function Begin2() {
var array = [];
var arrayLast = [];
if (num1 !== num2 && num1 !== num3 && num2 !== num3) {
array.push(num1);
array.push(num2);
array.push(num3);
for (var i = 0; i < array.length; i++) {
if (typeof arr4[array[i]] === "string") {
arrayLast.push(arr4[array[i]]);
} else {
var num4 = Math.round(Math.random() * (arr4[array[i]].length - 1));
arrayLast.push(arr4[array[i]][num4]);
}
}
} else {
Begin();
}
console.log(arrayLast);
document.getElementById("name").innerHTML="";
for (var i = 0; i < arrayLast.length; i++) {
document.getElementById("name").innerHTML += arrayLast[i] + "</br> ";
}
}
btn.onclick = function () {
Begin();
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。