中央論壇 - CENTER BBS
標題:
樂透彩系列範列
[打印本頁]
作者:
f66666602
時間:
2007-8-14 04:41
標題:
樂透彩系列範列
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 30
void GenLottoNumbers(int *pNum, const int size);
void PrintNumbers(int *pNum, const int size);
int main(void)
{
int A[6] = {0};
int B[6] = {0};
int i, j, hit;
srand((unsigned int )time(NULL));
for (i=1; i<=10; i++)
{
printf("第%d期 - 開出號碼: ", i);
GenLottoNumbers(A, 6);
PrintNumbers(A, 6);
printf("你選的號碼: ");
GenLottoNumbers(B, 6);
PrintNumbers(B, 6);
for (j=0, hit=0; j<6; j++)
if (A[j]==B[j])
hit++;
printf("中了%d個號碼\n", hit);
}
return 0;
}
void PrintNumbers(int *pNum, const int size)
{
int i;
if (!pNum || size <= 0)
return;
for (i=0; i<size; i++)
printf("%d ", *(pNum+i));
}
// for qsort()
int compare(const void *arg1, const void *arg2)
{
if ( *(int *)arg1 < *(int *)arg2 )
return -1;
else if ( *(int *)arg1 > *(int *)arg2 )
return 1;
else
return 0;
}
// Generate unique random numbers and sort them
void GenLottoNumbers(int *pNum, const int size)
{
int number[MAXSIZE];
int i, j, n;
int min, max;
if (!pNum || size <= 0 || size > MAXSIZE)
return;
for(i=0; i<MAXSIZE; i++)
{
number = i+1;
}
min = 0;
max = MAXSIZE-1;
// Generate unique numbers
for (i=0; i<size && min<=max; i++) // 下限必須小於等於上限
{
n = rand() % ((max + 1) - min) + min;
pNum=number[n];
//printf("%d ", number[n]); // 印出產生的號碼
if (n==min) // 亂數等於範圍的下限,不需要shift,直接更新下限值
min++;
else if (n==max) // 亂數等於範圍的上限,不需要shift,直接更新上限值
max--;
else // 需要shift
{
// 將 array裡的數字從n+1開始向前shift
for(j=n+1; j<=max; j++)
number[j-1] = number[j];
max--; // 更新上限值
}
}
qsort((void *)pNum, (size_t)6, sizeof(int), compare); // sort the random numbers
}
複製代碼
歡迎光臨 中央論壇 - CENTER BBS (https://www.centerbbs.com/)
Powered by Discuz! X3