srand와 rand를 이용해 배열에 각각 다른수를 저장하도록 만드는 프로그램입니다.
들찬길
#include stdio.h
#include stdlib.h
#include time.h
#define MAX_SIZE 10
int main(void)
{
int i,j;
int gene_num;
int gene_num_array[MAX_SIZE] = {0,};
for(i=0; iMAX_SIZE; i++){
srand((unsigned int) time(0));
gene_num = rand()%100+1;
for(j=0; j=i; j++){ //인덱스 j를 따라 움직이는데 이때값이 0인 인덱스를 찾으면 그 인덱스에 생성된 번호를 투입.
if(gene_num_array[j] == 0) gene_num_array[j] = gene_num;
else if(gene_num == gene_num_array[j]){ // 생성한 번호와 기존 인덱스에 있는 번호가 같으면
srand((unsigned) time(0)) // 재생성
gene_num = rand()%100+1;
} elsecontinue; //j쪽 루프로 돌아서 다시 비교...
}
printf(%d ,gene_num_array[i]);
}
return 0;
}
이렇게 실행시키면 같은 숫자만 찍힙니다.
분명 다르게 할려는 조건을 이렇게까지 만들었는데도 실행결과가 한가지 수로만 찍히니 답답할 따름입니다...
어떻게 해결해야 할까요?
그리고 이 방법으로 랜덤하게 수를 생성시켜 보니까 일정 시간에 따라서 계속 똑같이 증가하는 형태로만 나타나고 있습니다.
컨트롤+f5로 실행 그리고 바로 키를 눌러 종료한후에 그 즉시 컨트롤+f5로 실행하면 제가 간격을 비슷하게 해서인지 3씩 계속 증가하는 식으로밖에 나타나지가 않더군요.
조금 더 디테일하게 수를 생성해내는 방법은 없을까요?
덧
번호 추출을 여러번 반복시키게 프로그램을 바꾸니까 이번엔 추출된 10개의 수가 매번 똑같게 반복됩니다. 이 방법가지 해결을 좀 봐야겠습니다.
-
이리온 2023-06-04
srand 함수는 main 함수 처음에 한 번만 있어야 됩니다.
-
회전력 2023-06-04
계속 증가하는건 난수를 제대로 입력을 안해서 입니다.
-
이든샘 2023-06-04
아.. 잘못됬군요.. gene_num = rand()%100+1; 가 아닙니다.
난수는 난수 = rand() % (종료값 - 시작값 + 1) + 시작값 입니다.
그런데 지금은 rand() % 종료값 과 1만 더한것 같습니다만..
죄송합니다. 도움이 되지 못해서.
저 초보 (퍽퍽)