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 相关文章推荐
Dom 是什么的详细说明
Oct 25 Javascript
javascript面向对象编程代码
Dec 19 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
js特殊字符转义介绍
Nov 05 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
在JavaScript中使用JSON数据
Feb 15 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
解析Vue.js中的组件
Feb 02 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 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
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
js模拟C#中List的简单实例
2014/03/06 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
在Python中表示一个对象的方法
2019/06/25 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
店长助理岗位职责
2013/12/13 职场文书
初中音乐教学反思
2014/01/12 职场文书
化学教师教学反思
2014/01/17 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
第二课堂活动总结
2014/05/07 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
正确使用MySQL update语句
2021/05/26 MySQL
JavaScript组合继承详解
2021/11/07 Javascript