100个人被某大学的A专业录取
现该专业欲将此100人分成三个班
需要符合
1、男女分配均匀
2、民族分配均匀
3、生源地分配均匀
有没有啥好算法?

解决方案 »

  1.   

    貌似俺自己解决了
    下面是我的思路
    来个高手帮俺看看这样行不行:
    性别只考虑男女两种(人妖就别来参合了)
    生源地精确到升或者是直辖市就好
    至于民族根据中国实际国情
    只分为汉族和非汉族
    所以
    可以先创建一张临时表其他字段和原来存储学生信息的一致
    只有民族字段只有汉族和非汉族
    将原来的学生信息存到该临时表中
    紧接着分别对临时表中的民族、生源地、性别进行排序
    这样一来就相当于将100个学生分层
    这些层凑在一起感觉很集中
    但是一分开就比较均匀了
    一班抽调100个学生中的34个
    取排序之后的第1、4、7、10、……、100号
    二班抽调100个学生中的33个
    取排序之后的第2、5、8、11、……、98号
    三班抽调100个学生中的34个
    取排序之后的第3、6、9、12、……、99号
    这样组成的三个班应该是符合要求的
    如果哪位大侠有更好的算法请拿出来分享下
      

  2.   

    呃……
    错了
    三班也应该是33个而不是34个
      

  3.   

    你这个算法不怎么通用 找个学数学的就解决了