读书人

14个数随机取9个数组合解决办法

发布时间: 2012-03-04 11:13:33 作者: rapoo

14个数随机取9个数组合
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
.........................
想了挺多久的 都不行 望大侠们赐教.....

[解决办法]

Delphi(Pascal) code
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));
[解决办法]
是要求 全组合
还是 取n次?是否严格要求不能重复?

[解决办法]
Delphi(Pascal) code
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;
[解决办法]
Delphi(Pascal) code
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; 

读书人网 >.NET

热点推荐