게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 rand(); 이 원래 이렇게 불안정한가요?
게시물ID : programmer_8736짧은주소 복사하기
작성자 : rEnEw
추천 : 0
조회수 : 964회
댓글수 : 12개
등록시간 : 2015/03/19 14:45:52
옵션
  • 본인삭제금지

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


#define MAX_CNT 11

#define BUF_SIZE 12


#define    FROM 32

#define    UNTIL 123 +1 - FROM 


int main()

{

char cNum[BUF_SIZE];

int iCnt;

int Filter;


srand((unsigned)time(NULL));

for(int cNt =0; cNt < MAX_CNT - 1; ++cNt)

{

for(iCnt = 0; iCnt < MAX_CNT; )

{

//  까지~ 부터~

Filter = rand()%UNTIL + FROM; //rand()%(m -1 + n) + n


if(  48 <= Filter && Filter <= 57 ) // 숫자 이리왕

{

cNum[iCnt] = Filter;

++iCnt;

}

else if(  97 <= Filter && Filter <= 122 )     // 소문자 이리왕

{

cNum[iCnt] = Filter;

++iCnt;

}

else if(  65 <= Filter && Filter <= 90 )     // 대문자 이리왕

{

cNum[iCnt] = Filter;

++iCnt;

}

else

{ continue; }

}

cNum[iCnt] = 0;

printf("%s  \n", cNum);

}

return 0;

}




 sha256 해쉬 알고리즘을 이용한 패스워드 인증 Win32 프로그램을 짰는데, 

잘되나 테스트 해볼 용도로 랜덤으로 문자열 생성해주는 함수를 짜봤습니다.


 저 문자열을 hash 해서 사전에 지정해놓은 해쉬값과 strcmp 해서 틀린값만 카운트를 하면 되는데...


 이게 한 10만번 반복문 정도까진 제가 원하는 대로 나오는데, 한 1000만번 정도 돌려주니까

같은 문자열이 계속 생성되는 문제가 생기는데, 좀 알아보니 rand()함수 자체가 시드 쪽 문제때문에 그런 경우가 있을수 있다~ 라긴 하던데;; 거의 100만~1000만번 정도에서는 어지간하면 깨지네요; 혹시 보완/수정해야할 부분이 있나 체크좀 해주시면 감사하겠습니다 ㅠㅠ


제가 잘못짠건지; rand()가 문제인지 에효...

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호