Random rdm = new Random();
  int index ;
 do
  {      index = rdm.Next(30);
  }
 while (arrangetime[index] == 1);
 运行一段时间后,产生的随机数不变,成了死循环,如何解决呢?请老师赐教。

解决方案 »

  1.   

    public virtual int Next(
    int maxValue
    )
    如果你生成了30个了。那再往后就是死循环了。
      

  2.   

     arrangetime[index]
    是个数组
      

  3.   

    arrangetime的前31个里面会不会全是1?
      

  4.   

    DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
      

  5.   

    arrangetime数组长度为30,有可能全是1
      

  6.   

    有可能啊 感觉这个数组arrangetime长度应该是30,lZ好像是在抽奖呢
      

  7.   

    那你这个就不是随机数的问题了是数组问题或何时从while break
      

  8.   

     arrangetime数组初始化为0的,当全是1的时候程序就退出了。
      

  9.   

    全是1while退不出了还是把其他相关的代码贴上吧
      

  10.   


    Random rdm = new Random();
      int index ;
     do
      {  index = rdm.Next(30);
    Thread.sleep(20);
      }
     while (arrangetime[index] == 1);
      

  11.   

    应该把rdm 声明为class作用域的static变量。例如:public class XXXX
    {
        private static Random rdm = new Random();    void test()
        {
            ......
            do
            {
              index = rdm.Next(30);
            }
    ........
      

  12.   

    这是一个排课程序中的一个函数
      arrangetime[index]初始化0;
      arrangetime[index]数组记录了老师一周上课的情况。(一周共30个课时)
      排课的时候,先产生一个随机数,传给arrangetime[index],然后判断是否==1,如果是1,重新生成一个随数。只到arrangetime[index]==0
      

  13.   

    怎么可能不变呢?你把index写到日志文件看看,要真不变,恭喜你找到MS的BUG。