JS实现随机抽取三人


Posted in Javascript onNovember 06, 2019

因为实验室每周需要三人来做报告,所以用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();

 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery中dialog属性小记
Sep 03 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
Jan 03 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
jquery实现弹出层完美居中效果
Mar 03 Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
学习Angularjs分页指令
Jul 01 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
Node对CommonJS的模块规范
Nov 06 #Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 #Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 #Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 #Javascript
js+html实现点名系统功能
Nov 05 #Javascript
vuex 实现getter值赋值给vue组件里的data示例
Nov 05 #Javascript
在Vue mounted方法中使用data变量详解
Nov 05 #Javascript
You might like
晶体管来复再生式二管收音机
2021/03/02 无线电
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
php compact 通过变量创建数组
2016/11/15 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
python 图片验证码代码
2008/12/07 Python
利用python发送和接收邮件
2016/09/27 Python
简单了解python模块概念
2018/01/11 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
Python删除n行后的其他行方法
2019/01/28 Python
Django异步任务线程池实现原理
2019/12/17 Python
python如何实现复制目录到指定目录
2020/02/13 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
linux下进程间通信的方式
2014/12/23 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
最新党员思想汇报
2014/01/01 职场文书
自我评价的范文
2014/02/02 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
法律专业自荐信
2014/06/03 职场文书
2014年学前班工作总结
2014/12/08 职场文书
行政前台岗位职责
2015/04/16 职场文书
信息简报范文
2015/07/21 职场文书
清洁工工作总结
2015/08/11 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL