리눅스로 돌렸고 뭐 비주얼씨도 될겁니다.
확률상 정말 어렵게 번호를 선택하기로 하고 정말 좀 기다려야 됩니다만 그래도 빠른 컴이라면 조금 빨리 나올겁니다. 리눅스머신 펜3 800에서 거의 10초쯤 걸리는듯... 그래도 제대로 작동합니다만 제가 이걸로 로또를 해서 몇번 당첨됐냐하면.......... 빵이올시다... ㅜ.ㅜ 로또, 정말 쪼또 안맞데요...
#include
#include
#include
unsigned long gCount = 0;
unsigned int devideNum = 8145060; // 요부분 맘대로 바꿔도 됩니다. 아무렇게나 쓴다는것이 요번호.
struct node{
node *prev, *next;
int value;
};
class link{
private:
node *first, *last;
public:
link();
~link();
void Add( int n );
void Delete( node *n);
void Display( node *t ){ printf("%d ", t->value); }
void ShowAll();
int Extract();
};
///// constructor
link::link()
{
first = new node();
last = new node();
first->prev = NULL;
first->next = last;
last->next = NULL;
last->prev = first;
first->value = last->value = 0;
srand( (unsigned)time( NULL ) );
for( int i=0;i<45;i++)
Add( i+1 ); // from 1 to 45
}
//// destructor
link::~link()
{
while( first->next != last ) Delete( first->next );
delete first;
delete last;
}
void link::ShowAll()
{
node *t;
t = first->next;
while( t != last ){ Display( t ); t = t->next; }
}
void link::Add( int n )
{
node *t = new node();
t->value = n;
t->prev = last->prev;
t->next = last;
last->prev->next = t;
last->prev = t;
}
void link::Delete( node *n )
{
n->prev->next = n->next;
n->next->prev = n->prev;
delete n;
}
int link::Extract()
{
node *t = first->next;
int i;
int targetNum = rand()%devideNum;
printf("targetNum = %dn", targetNum);
for(;;)
{
gCount++;
i = rand() % devideNum;
// 이부분, 정말이지 아주 어렵게 번호를 선택하라고 설정한것임... ^^
if( i == targetNum)
{
int x = t->value;
Delete( t );
return x;
}
t = t->next;
if( t == last ) t = first->next;
} //for
}
void main()
{
int i;
int flag = 0;
int result[6], t;
link *x = new link();
for( i = 0;i<6;i++)
result[i] = x->Extract();
do{
flag = 0;
for(i=0;i<5;i++)
{
if( result[i] > result[i+1])
{
t = result[i];
result[i] = result[i+1];
result[i+1] = t;
flag = 1;
}
}
}while( flag == 1);
printf("===============================================n");
for( i = 0;i<6;i++)
printf("%d ", result[i]);
printf("n");
printf("===============================================n");
printf("total Loop : %ldn", gCount);
delete x;
}// main