大家看我这段代码吧
qx.Close;
qx.SQL.Clear;
qx.SQL.Add('select * from 选择题');
qx.Open;
qx.First;
i:=1;
     while i<=x1 do
   begin
 randomize;
       qx.first;
       qx.MoveBy(Random(qx.recordcount));
            i=i+1
    end
我这样取的记录总是有重复的,所以我希望能取到不重复的随机数呀。这样我在出来5条记录的时候才不会重复。因为这是个出题的程序。
 我如何才能实现呢?
    我想在while语句下设一个语句,把已经出的题标识一下,可以如何标识qx.MoveBy(Random(qx.recordcount));这条记录呢?
 哎呀呀!!愁傻我了!

解决方案 »

  1.   

    该问题已经结贴 ,得分记录: htyx (20)、 fengxue291080 (20)、 fenger8293 (10)、 这个问题也是  简单的随机数问题,请高手指教  一样的问题,上个完问题已经揭帖,谢谢大家指教!
      

  2.   

    那你可以呀,你要出五道题是不是
    你就设一个五个元素的数组,把数据初始的值初始化为很大的值,大于你的数据库中题的记录数,这样刚开始才不会有重复,然后在while中,每产生的一个随机数,就把这个随机数和数组中的每个元素比较,如果有重复,就跳过,再产生一个,到没有重复。把这个没有重复的数存入数组相应的位置(i)。如果到i等到五,
    那么里面的五个元素就没有重复了。
      

  3.   

    出题的数目是不确定的,又用户的输入而定。大家看到qx.MoveBy(Random(qx.recordcount));我是要移动到随机的这一条记录的,如果大了? 不明白呀?
    希望能更改我的代码!谢谢