요즘 몇몇분들이 mp3재생기를 만드시기에 저도 몇칠전부터 쪼짝 쪼짝만들고있습니다..
그러다 문득 그간의 랜덤재생방식을 보니..그저 난수를 이용하여 재생하는 방식을 택한것을 보고 몇가지 테스트를 해봤습니다..
모든 노래가 랜덤하게 나오는 것이 아니라 어떤노래는 자주 나오고 어떤 노래는 안나온등 균일하게 나오지 않는 현상을 발견...V^^V
그래서 간단히 팁하나 재공할까합니다..
문자:재생번호
실수:수,재생수;
///위쪽은 아시죠..^^
반복
{ 수:=난수(창1.리스트박스0.내용.줄수); // 난수를 이용하여 재생할곳을 선택
만일( 0 = 문자찾아(수를문(수), 재생번호)) // 재생유무 검사 0:재생않했음
{ 재생수:=재생수+1; // 총재생수를 카우트함
재생번호:=재생번호+수를문(수)+"."; // 현재곡을 선택했을을 저장
} } 까지(재생수=리스트박스0.내용.줄수); // 리스트 의 모든곡을 재생할때까지 반복
재생번호:="";
캬 간단하네용..^^ 요것이 핵심입니다..
여기서 주위할것은..
재생번호:=재생번호+수를문(수)+".";
요부분입니다..반드시 .(점)또는 기타 문자로 나누어 주어야 합니다..
1 15 6 7번곡인데..
11567 <--- 이렇게 저장되면 1 11 15 56 67번이 모두 포함되게 됩니다..
그래서
1.15.6.7. 이렇게 해주는 것입니다..
그리고 반드시 모든곳을 재생후에는 재생목록을 초기화 해주는것 을 빼먹음 안됩니다..
만일 빼먹고 재실행시 무한 루푸에 빠지게 됩니다..
재생목록:=""; 또는 안전을 위해.. 명령준간에 3회 카운트 되지않는경우 빠져나오는 명령을 집어 넣는것도 좋겠죠..
질문은 Q&A를 통해서..^^
아 그리고 적용법은 아시죠...
ps.이진백 2004-07-18 PM 4:48:33
이거 말고도 난수와 거의 모든 Random 명령어는 끝 수를 반환하는 경우가 많습니다.(특히, 자바 같은거)
이래서... 저는 난수1이 끝 번호일 경우 난수2를 구해 끝 번호라면 다시 난수1 이런식으로 하는 방법을 계획중이었는데... 그럴 필요가 없군요.
ps.이진백 2004-07-18 PM 4:49:45
난수초기화; 이런거 있을텐데. 그거를 프로그램 실행시 먼저 하세요.
그러지 않고 확인결과 첫번째 난수결과가 0입니다.
권선중 2004-07-19 PM 9:58:46
수정했습니다..
만일( 0 <> 문자찾아(수를문(수), 재생번호))
가 아니고
만일( 0 = 문자찾아(수를문(수), 재생번호))
입니다.. 즉 문자검사시.. 없는경우 0이 반환됩니다..