난수 질문 드립니다.
아론아브라함
#include iostream
using namespace std;
#include stdlib.h
#include time.h
void main(void)
{
srand( (unsigned)time(NULL) );
for(int i=0; i5; i++)
cout rand()%10 endl;
}
--------------------------------------------------------------------------------------------------
#include iostream
using namespace std;
#include stdlib.h
#include time.h
void main(void)
{
int n[4]={0};
srand( (unsigned)time(NULL) );
for(int i=0;i5; i++)
{
n[i] = rand()%10;
}
for(int i=0;i5; i++)
{
for(int j=0;j5; j++)
{
if(n[i] == n[j])
{
n[j] = rand()%10;
}
}
}
for(int i=0;i5; i++)
cout n[i] endl;
}랜덤의 숫자를 생성하는 것을하다가 안되서 질문 드립니다.
처음에는 10이하의 랜덤한 숫자를 출력하는데 까지는 됫습니다.
하지만
저는 같지 않는 랜덤의 숫자를 출력 하려고 하는데 자꾸
실패하고 마네요...
어떤것이 틀렸는지 혹은 하는 방법을 알려주시면 감사하겠습니다^^
2번째 경우에는 오류 까지 나는것 같습니다..
그리고
srand( (unsigned)time(NULL) );
이것이 뜯하는게 무었지요 ~? 무작정 써보긴 했는데 왜 멀뜻하는지 모르겠네요..
-
귀염포텐
감사합니다 ^^ 오 생각지도 못했네여 ㅎㅎ
-
플랜
와우;
-
귀염포텐
난수는 구현 방법이 몇 가지 있습니다.
사이트도 찾아보시면 있겠지만...
지정된 범위안의 난수를 겹치지 않고 균등한 속도를 유지하는 가장 간단한 방법은...
셔플(섞기) 기법이 가장 좋다고 생각합니다..(개인적으로... 저 기법을..^^)
즉, 0부터 10까지 출력되도록 하고 싶으면
n이라는 배열에 0부터 10까지 차례로 저장해 놓고...
그 뒤에는 i와 j값을 배열의 인덱스 범위 안에서 랜덤으로 추출후에
각 값을 교체(swap)해주시면 간단합니다.
f -
이송이
감사합니다 ^^
-
로와
지금 밑에 2중첩 포문만 으로 말씀드립니다
젤바깥쪽 포문에 n[i]=rand()%10; 넣으시구요
j의 범위는 ji 까지 if문 안은 j = i; i--; 해주세요
앞에 먼저 나온숫자와 같으면 다시 넣겠다는 식이죠
다른 방법도 한번 더 생각해 보시길...