1,2,3,4,5,6,7,8,9,10,11,12,13,14 14个数 
随机取九个输出
如:1,2,3,4,5,6,7,8,9
   1,2,5,6,8,9,10,11,12
   6,7,8,9,10,11,12,13,14
   .........................
想了挺多久的 都不行 望大侠们赐教.....

解决方案 »

  1.   

    var
      i, k : Integer;
      tmpStr : string;
    begin
      i := 0;
      Randomize;
      repeat
        k := Random(14);
        if k <> 0 then
        begin
         tmpStr := tmpStr + ',' + IntToStr(Random(14));
          Inc(i);
        end;
      until i = 9;
      ShowMessage(Copy(tmpStr,2,Length(tmpStr) - 1));
      

  2.   

    更正错误
    var
      i, k : Integer;
      tmpStr : string;
    begin
      i := 0;
      Randomize;
      repeat
        k := Random(14);
        if k <> 0 then
        begin
         tmpStr := tmpStr + ',' + IntToStr(k);
          Inc(i);
        end;
      until i = 9;
      ShowMessage(Copy(tmpStr,2,Length(tmpStr) - 1));
    end;
      

  3.   

    var
      i : Integer;
      tmpStr : string;
    begin
      i := 0;
      Randomize;
      repeat
        tmpStr := tmpStr + ',' + IntToStr(Random(13)+1);
        Inc(i);
      until i = 9;
      ShowMessage(Copy(tmpStr,2,Length(tmpStr) - 1));
    end;
      

  4.   


    var
      i: integer;
      sl: TStringList;
      str: string;
    begin
      sl:= TStringList.Create;
      sl.Sorted:= true;
      sl.Duplicates := dupIgnore;
      sl.clear;
      str:= '';
      while sl.Count < 9 do
        begin
          Randomize;
          i:= Random(14);
          if i > 0 then
            sl.Append(inttostr(i));
        end;
      str:= sl.strings[0];
        for i:= 1 to sl.Count-1 do
          str:= str+','+sl.Strings[i];
      showmessage(str);
      sl.free;
    end;
      

  5.   

    用一个数组或用一个stringlist来放你的数字。然后用一个随机函数,根据随机函数出来的值来取某个数。取完后,删掉。继续。上一步直到取完9个数。
      

  6.   


    procedure TForm1.Button1Click(Sender: TObject);
      function getRandomStr(istr: integer): Integer;
      begin
        Application.ProcessMessages;
        Randomize;
        Result := Random(istr);
      end;
    var
      i,j: integer;
      str9: string;
      strList: TStringList;
      strList_random: TList;
    begin
      strList := TStringList.Create;
      try
        strList.Delimiter := ',';
        strList.DelimitedText := '1,2,3,4,5,6,7,8,9,10,11,12,13,14';
        //随机取9个数
        strList_random := TList.Create;
        try
          str9 := '';
          for i:= 0 to 8 do
          begin
            j := getRandomStr(14);
            if strList_random.Count>0 then
            begin
              while strList_random.IndexOf(Pointer(j))<>-1 do
              begin
                j := getRandomStr(14);
              end;
            end;
            strList_random.Add(Pointer(j));
            if str9='' then str9 := strlist[j]
            else str9 := str9+','+strlist[j];
          end;
          Memo1.Lines.Add(str9);
        finally
          strList_random.Free;
        end;
      finally
        strList.Free;
      end;
    end;
      

  7.   

    谢谢各位大侠 已搞定:
    var   a:array[0..10]of   integer;   
        
      procedure   TForm1.comb(m:integer;k:integer);   
      var   i,j:integer;   
              s:string;   
      begin   
          for   i:=m   downto   k   do   
              begin   
                  a[k]:=i;   
                  if   (k>1)   then   
                    comb(i-1,k-1)   
                  else   
                      for   j:=a[0]   downto   1   do   s:=s+format('%2.2d',[a[j]])+'   ';   
                      if   s<>''   then   
                        Memo1.Lines.Add(s);   
                        s:='';   
              end;   
      end;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   n:integer;   
      begin   
          n:=9;   //取n=9   
          a[0]:=n;   
          comb(14,9);   
      end;
      

  8.   

    谢谢各位大侠 已搞定了,很感谢各位
    var   a:array[0..10]of   integer;   
        
      procedure   TForm1.comb(m:integer;k:integer);   
      var   i,j:integer;   
              s:string;   
      begin   
          for   i:=m   downto   k   do   
              begin   
                  a[k]:=i;   
                  if   (k>1)   then   
                    comb(i-1,k-1)   
                  else   
                      for   j:=a[0]   downto   1   do   s:=s+format('%2.2d',[a[j]])+'   ';   
                      if   s<>''   then   
                        Memo1.Lines.Add(s);   
                        s:='';   
              end;   
      end;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   n:integer;   
      begin   
          n:=9;   //取n=9   
          a[0]:=n;   
          comb(14,9);   
      end;