| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:怎样随机分考场
只看楼主 加入收藏
gongdian
Rank: 2
等 级:论坛游民
帖 子:127
专家分:11
注 册:2008-3-1
结帖率:50%
收藏
 问题点数:0 回复次数:7 
怎样随机分考场
一个班级只能占有一个考场,这个可以写出来,可是每个班怎么能随机分配考场?请教一下思路。
搜索更多相关主题的帖子: 考场 随机 
2008-05-12 16:45
kyln
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-4-21
收藏
得分:0 
这是个无重复随机数产生的问题.
可以使用 Random r = new Random();
          a=  r.Next(40);
来产生小于40的随机数,可以把已经分配的班级的序号保存起来,每产生一个新随机数时看是否跟前面的重复,若重复就重新生成随机数大概就行了
2008-05-12 18:11
gongdian
Rank: 2
等 级:论坛游民
帖 子:127
专家分:11
注 册:2008-3-1
收藏
得分:0 
小弟真是写不出来,请大家帮忙了。
class A
{
    static void Main()
    {
        Random free=new Random();
        int a=free.Next(1,20);

        int[] number=new int[20];

        for(int j=0;j<20;j++)
        {
            number[j]=a;
            a=free.Next(1,20);
        }

        for(int i=0;i<20;i++)
        {
            for(int j=1;j<20;j++)
            {
                if(number[i]==number[j])//如果前后两个数相等
                {
                    a=free.Next(1,20);//就生成一个新数
                    if(a!=number[i])//生成的数不是前面的数就赋值
                    {
                        number[j]=a;
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
        }
        
        for(int i=0;i<20;i++)
        {
            Console.WriteLine(number[i]);
        }
    }
}
2008-05-13 18:18
gongdian
Rank: 2
等 级:论坛游民
帖 子:127
专家分:11
注 册:2008-3-1
收藏
得分:0 
using System;
class A
{
    static void Main()
    {
        Random free=new Random();
        int a=free.Next(1,15);
        int change;
        int[] number={16,2,13,4,18,20,7,12,9,17,11,8,3,14,15,1,10,5,19,6};

        for(int j=0;j<100;j++)   //混排
        {
            if(a<=4)
            {
                a=free.Next(0,3);
            }
            if(a>=5 && a<=8)
            {
                a=free.Next(4,7);
            }
            if(a>9 && a<13)
            {
                a=free.Next(8,11);
            }
            if(a>=14 && a<=18)
            {
                a=free.Next(12,15);
            }
            change=number[a];
            number[a]=number[a+4];
            number[a+4]=change;
            a=free.Next(0,18);
        }
        
        
        for(int i=0;i<20;i++)
        {
            Console.WriteLine("{0}班,在第{1}考场",i+1,number[i]);
        }
    }
}

终于自己写出来了.
2008-05-17 13:05
落木萧萧
该用户已被删除
收藏
得分:0 
回复 3# gongdian 的帖子
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-04 11:14
落木萧萧
该用户已被删除
收藏
得分:0 
回复 3# gongdian 的帖子
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-04 11:53
沉沦过迁
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:2297
专家分:10
注 册:2007-5-8
收藏
得分:0 
用Random 和 ArrayList 会比较方便的

也许我没有明天,但是我拥有现在
2008-06-04 16:19
gongdian
Rank: 2
等 级:论坛游民
帖 子:127
专家分:11
注 册:2008-3-1
收藏
得分:0 
Random free=new Random();
int a=free.Next(10);
int change;
int[] number1={1,2,3,4,5,6,7,8,9,10,11,12,13};
for(int j=0;j<50;j++)
        {
            change=number1[a];
            number1[a]=number1[a+3];
            number1[a+3]=change;
            a=free.Next(10);
        }
for(int j=0;i<13;i++)
{
   Console.WriteLine(number[i]);
}
混排数组的位置,再输出,也可以实现。
2008-06-08 09:26
快速回复:怎样随机分考场
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012855 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved