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 load Page,load css,load js实现代码
Mar 31 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
javascript实现倒计时(精确到秒)
Jun 26 Javascript
18个非常棒的jQuery代码片段
Nov 02 Javascript
详解webpack和webpack-simple中如何引入css文件
Jun 28 Javascript
vue2.x select2 指令封装详解
Oct 12 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
Nov 22 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
layui清空,重置表单数据的实例
Sep 12 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 Javascript
vue css 相对路径导入问题级踩坑记录
Jun 05 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
example2.php
2006/10/09 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
JS常见算法详解
2017/02/28 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Python生成随机数的方法
2014/01/14 Python
Python入门篇之条件、循环
2014/10/17 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
基于python的Paxos算法实现
2019/07/03 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
接口可以包含哪些成员
2012/09/30 面试题
自动一体化专业求职信
2014/03/15 职场文书
小学生校园广播稿
2014/09/28 职场文书
会计主管竞聘书
2015/09/15 职场文书
团干部培训班心得体会
2016/01/06 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js