比如说我用0-25的随机数,第一次出来的随机数是5
以后就不能再出现5了
第二次出来的是6
以后就不能再出现6了
第三次出来的是15
以后就不能在出现15了
直到0-25个数全部用完,
再从第一次开始了
简单的说就是随机抽取0-25里面的数,用过以后就不在用了,直到0-25里面的所有数都用完,在重新开始求解

解决方案 »

  1.   

    这个功能是 随机发牌 吧生成25个数组,内容依次为1-25
    然后循环每个元素与random(25)+1号元素交互,即可var
      i,t,p:integer;
      arr:array [1..25] of integer;
    begin
      for i:=1 to 25 do
        arr[i]:=i;
      for i:=1 to 25 do
      begin
        t:=arr[i];
        p:=random(25)+1;
        arr[i]:=arr[p];
        arr[p]:=t;
      end;
    end;
      

  2.   

    把0~25之间的数存放到一个队列中  str:=TStringList.Create;
      str.Clear;
      for i:=0 to 25 do
        str.Add(IntToStr(i));
    [code]
    然后每次取随机数时,只是取队列中序号,然后取出对应的数值,然后将该数值从队列中删除
    [code=Delphi(Pascal)]
      i:=str.Count;
      Randomize;
      i:=Random(i);
      s:=str.Strings[i];
      str.Delete(i);不知道楼主能明白乎