VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 692|回复: 2

急啊,各位大虾,求考场随机赋值的算法

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-23 06:40:01 | 显示全部楼层 |阅读模式
选中某个年级如高一年级(共300人),再选择考场范围(如301,302,303,..共十个考场(先每个考场30人,有的考场根据实际情况可能要增加几个人))  
如何将这300人分配到这十个考场,年级个人,考场范围均存在ArrayList中,可采用for循环遍历或者迭代获得其值,采用随机赋值(把考生随机分配到以上考场)怎样实现,或用其他方法
回复

使用道具 举报

0

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-2-18 14:45:01 | 显示全部楼层


import java.util.*;


class Student {
  int id;
  public Student(int id){
    this.id=id;
  }
}

class Classroom {
  int id;
  ArrayList list=new ArrayList();
  public Classroom(int id){
    this.id=id;
  }
  public void addStudent(Student st){
    list.add(st);
  }
  public String toString(){
    StringBuffer sb=new StringBuffer();
    sb.append("Room id:"+id);
    sb.append("\r\n");
    sb.append("student:");
    for(int i=0;i<list.size();i++){
      Student st=(Student)list.get(i);
      sb.append(st.id+",");
    }
    return sb.toString();
  }
}

public class Test {
  public static void main(String args[]){
    ArrayList stList=new ArrayList();
    ArrayList crList=new ArrayList();
    for(int i=0;i<300;i++){
      stList.add(new Student(i));
    }
    Collections.shuffle(stList);
    for(int i=0;i<10;i++){
      crList.add(new Classroom(i));
    }
    for(int i=0;i<stList.size();i++){
      Student st=(Student)stList.get(i);
      Classroom cr=(Classroom)crList.get(i%crList.size());
      cr.addStudent(st);
    }
    for(int i=0;i<crList.size();i++){
      Classroom cr=(Classroom)crList.get(i);
      System.out.println(cr);
    }
  }
}
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-21 22:45:01 | 显示全部楼层
大体思想应该是先随及产生30人然后去点这30人在随机30人就是一个递归.最好使数组数组里好象有随机产生下标的方法.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表