我要做一个自动排课系统,对于取课记录要用随机函数生成,每次调用随机函数,都不能返回相同的值。我的程序是这样的:
   table1.open;//table跟教学计划库相连;
   memo1.clear;  
   randomize;
   i:=1;
   check[i]:=random(table1.recordcount+1);
   table1.recno:=check[i];//check数组用来记录已经产生的随机数,便于检查以后产生的随机数不能跟以前产生的重复;
   while i<table1.recordcount do
      begin
           t:=random(table1.recordcount+1);
           flag:=true;//flag变量用于记录是否产生了跟以前相同的随机数
           for k:=1 to i do 
              if t=check[i] then flag:=false;
           if flag  then begin
                         i:=i+1;
                         check[i]:=t;
                         table1.recno:=t;
                         memo1.lines.add(inttostr(table1.recno)+' '+table1.fields[0].asstring);                      end;
可是当我运行的时候,总是会有两个相同的随机数,不知道为什么!

解决方案 »

  1.   

    恩,zswang说的很有道理!可是这个在程序中怎么进行控制呢?
    前面的程序中我已经进行了一个控制:就是设置一个数组,把已经产生的随机数都放进去,当前产生的随机数跟这个数组中的数一一比较,如果不同,就取来,产生下一个随机数,否则不取,产生下一个随机数 !
       可是不知道为什么会产生错误呢!
      

  2.   

    你可以先另外将一个临时表,将你的Table中的纪录每次取出后就删除,把她加到你的临时表中,就不会重复的了