애니그마는 세계2차 대전 중에 사용된 암호이다. 기계의 작동 원리는 좀 더 복잡한 것 같지만, 결과적으로 알파벳 문자 하나하나를 각기 다른 것으로 치환한다. C실습 중에 애니그마가 생각나서 만들어본 코드. 중복 없이 랜덤한 문자를 A...Z까지 매칭하는 함수를 만들어보았다.
#include
#include
#include
int main()
{
char anig[26];
int i, j=0, r;
srand (time(NULL));
for(i=0; i<26; i++)
{
while(j<26)
{
r=rand()%26 + 65;
for (j=0; j<=i; j++)
{
if(r==anig[j]) break;
}
if (j<i) continue;
else
{
anig[i]=r;
break;
}
}
}
for (i=0; i<26; i++)
{
printf("%c=%c ", 65+i, anig[i]);
}
printf("\n");
return 0;
}
비슷한 원리로 로또번호 생성기도 만들 수 있다. 알파벳 26개 대신 1~45번까지의 숫자를 6개를 랜덤하게 추출하면 된다.