Randomize;
      tmp:=IntToStr(Random(49) + 1);
这是我的代码
请问这样tmp会出现相同的数么
我运行程序很多次了
发现有一次同出了两个4号
我不知道是这个会出现相同的还是别的地方出的错我这里是随机出几个数  没个都不相同
运行了10次后结束

解决方案 »

  1.   

    赋值的时候进行while,出现重复的就重新赋值。
      

  2.   

    你需要這樣做:1、建立一個TStringList(SL),然後將1-50逐個追加進去;
    2、從0到SL.Count - 1中隨機一個數,然後讀取SL中相對的值,然後刪除這個值。
    3、取完以後釋放SL。
      

  3.   


    procedure TForm1.Timer4Timer(Sender: TObject);
    begin
          Timer4.Interval := 500;
          Randomize;
          tmp:=IntToStr(Random(49) + 1);
          Timer4.Enabled := False;
          Timer5.Enabled := True;
    end;
    我想在tmp:=IntToStr(Random(49) + 1);
    用if判断他的真假   我写的函数老出错
    while (SJ.Count<50) do
        begin
          if SJ.IndexOf(tmp)=-1 then
            begin
              SJ.Add(tmp);
              Result := True;
            end
            else
              Result := False;    end;
       ST.Free;
    你帮我看下是哪里错了
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sl: TStringList;
      i, x: Integer;
    begin
      sl := TStringList.Create ;
      for i := 1 to 50 do
        sl.Add(IntToStr(i));
      Randomize;
      x := Random(sl.Count);
      ShowMessage(sl.Strings[x]);
      sl.Delete(x);
      FreeAndNil(sl);
    end;