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 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
Oct 26 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
javascript返回顶部的按钮实现方法
Jan 09 Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 Javascript
Node.js  REPL (交互式解释器)实例详解
Aug 06 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
基于PHP文件操作的详解
2013/06/05 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
php时间戳转换代码详解
2019/08/04 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
Python求导数的方法
2015/05/09 Python
python正则表达式之作业计算器
2016/03/18 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Python3 合并二叉树的实现
2019/09/30 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
strstr()的简单实现
2013/09/26 面试题
管理科学大学生求职信
2013/11/13 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
遗愿清单观后感
2015/06/09 职场文书
竞聘书的秘诀
2019/04/02 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android