Q&A

  • 랜덤함수에대해서
이번에 몇명의 학생과 카드놀이 게임을 델파이로 구현해보려고하는데...

랜덤함수 소스를 찾을수가 없어서 이 글을 남김니다.

단순한 랜덤함수는 똑같은것이 반복되는 것으로 알고 있고 카드놀이의 경우는

이미 뺀카드는 다시는 나올수 없어야 하므로 여러조건이 필요하다고 생각되거든요. 혹시 알고 계시면 좀 가르켜주셨으면 하는데...

1  COMMENTS
  • Profile
    최용일 2000.08.19 08:03
    안녕하세요. 최용일입니다.



    TList를 사용해서 이미 뺀 카드는 삭제해버리면 되죠...



    procedure TForm1.Button1Click(Sender: TObject);

    var

    I, Key: Integer;

    List: TList;

    begin

    List := TList.Create;

    Randomize;

    for I := 0 to 51 do // 52장의 카드

    List.Add(Pointer(I));



    for I := 51 downto 0 do // 랜덤하게 카드를 추출

    begin

    Key := Random(I+1);

    ListBox1.Items.Add(IntToStr(Integer(List[Key])));

    List.Delete(Key); // 이미 나온 카드는 삭제

    end;

    List.Free;

    end;



    ^^ 항상 즐코하세요.



    궁금이 wrote:

    > 이번에 몇명의 학생과 카드놀이 게임을 델파이로 구현해보려고하는데...

    > 랜덤함수 소스를 찾을수가 없어서 이 글을 남김니다.

    > 단순한 랜덤함수는 똑같은것이 반복되는 것으로 알고 있고 카드놀이의 경우는

    > 이미 뺀카드는 다시는 나올수 없어야 하므로 여러조건이 필요하다고 생각되거든요. 혹시 알고 계시면 좀 가르켜주셨으면 하는데...