룩업테이블을 이용한 랜더문자배열 출력인데.. 중복문제는 어케해야하는지..
일본어못해요
#includeSTDLIB.H
#includeTIME.Hstaticchar*Level[]={
red0,
red1,
red2,
red3,
red4,
yellow0,
yellow1,
yellow2,
yellow3,
blue04,
blue1,
blue2,
blue3,
white0,
white1,
white2,
white3,
};
voidmain()
{
inti,j;
char*CopyLevel[20];
srand((unsigned)time(NULL));
//randomize();
for(i=0;i(sizeof(Level)/sizeof(Level[0]));i++)
{
if(Level[i]==Level[0]/*||Level[1]||Level[2]||Level[3]||Level[4]*/)
{
for(j=0;j5;j++)
{
CopyLevel[j]=Level[rand()%5];
puts(CopyLevel[j]);
}
}
}
}
룩업테이블이 있고 이배열들을 이용하여 랜덤으로 발생시키는것 까지는 되는데요.
출력된 배열들이 중복되지 않게 하고 싶은데 어떻게 해야하는지..
여러중복랜덤이라는 용어로 검색해봤는데.. 다들 배열요소들이 정수로만 채워져있어서여.. (물론 제가 잘몰라서.)
결과값은
red0 ~ red4까지 랜덤으로 나옵니다.
중복되는수는 버리고 다시 랜덤으로 출력하여 5개모두 중복되지 않는배열로 출력하고싶습니다.
느낌상
일단 전부다 false 값을 같는 배열로 만든 상태에서. 출력되어진 값들만 true값으로 바꾸면 될것 같은데
문자배열이라 어떻게 전부 false 값으로 주는지.. 2틀재 고생중..
다른방법도 있긴한데 문자열이라 쉽지 않더군여..
고수님들에 답변 부탁드립니다.
div
-
흰여울
네 감사^^
-
잔디
배열이 짧고 속도가 문제가 없다면 수다님께서 말씀한 것처럼
동일한 크기의 boolean형 배열을 선언하셔서 false를 모두 세팅한 후에
index = rand()%5 ; 해서 boolean형 배열에서 index번째 값이 false라면 true세팅하고 그 값을 사용하고
아니라면 다시 index를 구해서 반복하면 될 듯합니다. 단, 무한 루프에 빠지지 않도록 검색하는 부분에서
주의가 필요하겠죠 ^^ -
참이삭
배열을 하나 더 두심이...