最新消息: 新版網站上線了?。?!
  • JS實現隨機抽取三人

    因為實驗室每周需要三人來做報告,所以用JS來做一個隨機抽取的頁面。

    首先,先說一下需求。研二同學共5人,一人是單獨的一組,研一同學共9人,同時九人分為三組。所以共八組,每周報告的三人從八組中抽取,這三人不能有兩人或者兩人以上在同一組。

    程序思路1

    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();
    
     }

    以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持谷谷點程序。

    .....

    轉載請注明:谷谷點程序 » JS實現隨機抽取三人

    平度胜利路按摩在什么地方多,平度做大活的足疗,平度职教中心女孩微信,平度找曼地方