728x90
안녕하세요, 일마레입니다.
업무를 보다 무료함을 느껴 로또 게임을 만들어 보았다.
한 장에 5천원 3번이 당첨된 적은 있으나...
더 이상의 금액은 무리였다.
과연 당첨이 될까...?
procedure TForm1.Button1Click(Sender: TObject);
// mm_lotto : 폼에 메모 하나 올려놓았음.
const
BallMax = 45;
SelectionMax = 6;
SelectCount = 5;
procedure QuickSort(var A: array of Integer; L, R: Integer);
var
I, J, P, T: Integer;
begin
if L < R then
begin
I := L;
J := R;
P := A[(L + R) div 2]; // Pivot 값 선택
repeat
while A[I] < P do
Inc(I);
while A[J] > P do
Dec(J);
if I <= J then
begin
T := A[I];
A[I] := A[J];
A[J] := T;
Inc(I);
Dec(J);
end;
until I > J;
QuickSort(A, L, J); // 왼쪽 부분 배열 정렬
QuickSort(A, I, R); // 오른쪽 부분 배열 정렬
end;
end;
var
i,cnt,j: Integer;
lotto : string;
randomNumber: Integer;
randomNumbers: array of Integer;
probabilities: array of Double;
isDuplicate: Boolean;
begin
SetLength(randomNumbers, 6);
SetLength(probabilities, 45); // 각 숫자마다 확률을 저장하는 배열
for cnt := 0 to SelectCount - 1 do
begin
Randomize; // 시드 값을 초기화하여 매번 다른 난수를 얻을 수 있도록 함
for i := 0 to 5 do
begin
repeat
randomNumber := Random(45) + 1; // 1부터 45까지의 난수 생성
isDuplicate := False;
if Random <= probabilities[randomNumber] then
else
begin
// 다른 숫자 선택
repeat
randomNumber := Random(45) + 1;
until Random <= probabilities[randomNumber];
end;
for j := 0 to i - 1 do
begin
if randomNumbers[j] = randomNumber then
begin
isDuplicate := True;
end;
end;
until not isDuplicate;
randomNumbers[i] := randomNumber;
end;
// 정렬된 숫자 출력
lotto := '';
QuickSort(randomNumbers, Low(randomNumbers), High(randomNumbers));
for i := 0 to 5 do
begin
if i = 5 then
begin
lotto := lotto + '-' + IntToStr(randomNumbers[i]);
end else
if i = 0 then
begin
lotto := IntToStr(randomNumbers[i]);
end else
begin
lotto := lotto + '-' + IntToStr(randomNumbers[i]);
end;
end;
mm_lotto.Lines.Add(lotto);
end;
심심풀이로 한 번 해보시는건 어떨까요?ㅎㅎ
화이팅!
728x90
LIST
'델파이' 카테고리의 다른 글
델파이/Delphi] FTP에서 이미지 내려 받기 (0) | 2024.07.11 |
---|---|
델파이/Delphi] TVirtualTable에 이미지 넣기 (0) | 2024.07.11 |
델파이/delphi] 유휴시간 체크 및 갱신하기 (0) | 2024.07.10 |
델파이/Delphi] https POST (3) | 2024.07.10 |
델파이/Delphi] Indy 설치하기 (2) | 2024.07.10 |