掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
乱数を振り当てランダムにある一定数のデータを取得するには? (ID:36636)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
データベースはまったく分からないのですが。 1000人の応募者の中から30人を選ぶということならば、TStringListのDuplicatesプロパティを利用する方法もあるかと思います。 function SortFunc(List: TStringList; Index1, Index2: Integer): Integer; var li_Num1, li_Num2: Integer; begin li_Num1 := StrToInt(List[Index1]); li_Num2 := StrToInt(List[Index2]); if (li_Num1 > li_Num2) then begin Result := 1; end else if (li_Num1 < li_Num2) then begin Result := -1; end else {if (li_Num1 = li_Num2) then} begin Result := 0; end; end; procedure TForm1.Button1Click(Sender: TObject); const lci_ENTRY = 1000; lci_LOT = 30; var lsl_List: TStringList; ls_Index: String; begin Randomize; lsl_List := TStringList.Create; try //重複を許可しない lsl_List.Sorted := True; lsl_List.Duplicates := dupIgnore; repeat ls_Index := IntToStr(Random(lci_ENTRY-1)); //0〜999 lsl_List.Add(ls_Index); until (lsl_List.Count >= lci_LOT); //リストを番号順に並べ替え lsl_List.Sorted := False; lsl_List.CustomSort(SortFunc); //lsl_Listには30人分のインデックスが番号順に入っているので //StrToIntで数値にしてデータベースから取り出す finally lsl_List.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.