一个随机分配的问题,请求高效的算法。

xinyun80 2009-03-25 04:14:42
假设:现在有100个考生编号分别为 1 - 100
现在考场是 10 * 10(每排10人)
现在要求座位号是随机分配,不是固定从1排到100

我已经算出来了,可是效率比较低,而且上面仅仅只是一个示例,有没有其他的好方法,请教了!
...全文
986 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2009-03-25
  • 打赏
  • 举报
回复
写个hashtable啦
0-100做主键,排序作为值,random取值扔进去,满100个就够了
秦彬 2009-03-25
  • 打赏
  • 举报
回复

那样不行

你可以先定义两个数组
然后把用new Random().next(1,n)方法取的随机数放到一个数组中
然后跟数组里面的每个数进行比较
如果相同 则 去掉
或者 就放到另一个数组中
这样递归调用就可以实现了
秦彬 2009-03-25
  • 打赏
  • 举报
回复
你那样不会重复吗?
xinyun80 2009-03-25
  • 打赏
  • 举报
回复
明白了,确实比我的方法高效
yan63 2009-03-25
  • 打赏
  • 举报
回复
改正:
.取new Random().Next(1, N)得结果n
这一步得到的结果 n 出现相同的机率高吗
-----------------
很高,
比如第一次取到1,则arraylist移除第一个元素,即1,座位号为1,1
第二次又取到1,则arraylist移除第一个元素,即2,座位号为2,1
这样....
yan63 2009-03-25
  • 打赏
  • 举报
回复
.取new Random().Next(1, N)得结果n
这一步得到的结果 n 出现相同的机率高吗
-----------------
很高,
比如第一次取到1,则arraylist移除第一个元素,即1,座位号为1,1
第二次又取到1,则arraylist移除第一个元素,即1,座位号为2,1
这样....

xinyun80 2009-03-25
  • 打赏
  • 举报
回复
现在是做实验,数据量一定是很大的
我不懂电脑 2009-03-25
  • 打赏
  • 举报
回复
数据量不大,没必要考虑算法
xinyun80 2009-03-25
  • 打赏
  • 举报
回复
.取new Random().Next(1, N)得结果n
这一步得到的结果 n 出现相同的机率高吗
yan63 2009-03-25
  • 打赏
  • 举报
回复
1.将1->100填充到arraylist等链表数据结构R
2.设N=100,
3.取new Random().Next(1, N)得结果n
4.在R中移除位置n的元素r,该元素r即为分配的位置,
5.对应r到10*10的矩阵中,得到分配的位置
6.N--
7.重复步骤2,直到N=0,即所有位置都被分配

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧