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 研究心得 取得属性的值
Nov 30 Javascript
纯js简单日历实现代码
Oct 05 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
自制微信公众号一键排版工具
Sep 22 Javascript
angularJS深拷贝详解
Mar 23 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
手写Spirit防抖函数underscore和节流函数lodash
Mar 22 Javascript
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
虫族 ZERG 概述
2020/03/14 星际争霸
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python温度转换实例分析
2018/01/17 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
树莓派实现移动拍照
2019/06/22 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
企业门卫岗位职责
2013/12/12 职场文书
我爱读书演讲稿
2014/05/07 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
家长会感言
2015/08/01 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
利用Python实时获取steam特惠游戏数据
2022/06/25 Python