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 相关文章推荐
javascript 无提示关闭窗口脚本
Aug 17 Javascript
测试你的JS的掌握程度的代码
Dec 09 Javascript
js语法学习之判断一个对象是否为数组
May 13 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
js实现抽奖效果
Mar 27 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
Vue——前端生成二维码的示例
Dec 19 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
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
PHP常用的三种设计模式
2017/02/17 PHP
php封装的验证码类分享
2017/02/26 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
树结构之JavaScript
2017/01/24 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python scatter函数用法实例详解
2020/02/11 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Python如何发送与接收大型数组
2020/08/07 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
Python 远程开关机的方法
2020/11/18 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
python实现控制台输出颜色
2021/03/02 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书