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 相关文章推荐
基于datagrid框架的查询
Apr 08 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
Nov 03 Javascript
ParseInt函数参数设置介绍
Jan 02 Javascript
JQuery节点元素属性操作方法
Jun 11 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
JS实现显示当前日期的实例代码
Jul 03 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 Javascript
vue 解决IOS10低版本白屏的问题
Nov 17 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
分析JS中this引发的bug
2017/12/12 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python实现完整的事务操作示例
2017/06/20 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
Python批量启动多线程代码实例
2020/02/18 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
开发房地产协议书
2014/09/14 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
党员三严三实心得体会
2014/10/13 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
费城故事观后感
2015/06/10 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS