2010-01-29 6 views
-5

내 C++ 숫자가 무작위가 아닌 이유는 무엇입니까?C++, 20 개의 숫자가 무작위가 아닌가요?

#include <iostream> 
#include <cstdlib> 
using namespace std; 


int main() 
{ 
    int randomNumber = rand() % 100; 


    for (randomNumber = 0; randomNumber < 20; randomNumber++) 
    { 

     cout << randomNumber << endl; 
    } 
    return 0; 
} 

//Why are my 20 numbers not random? 

답변

4

당신은) (당신이 임의의 숫자를 할 때마다 랜드를 호출해야합니다. 지금 가지고 계신 것처럼 하나의 난수를 생성 한 다음 20 개의 순차 번호를 얻을 수 있도록 20 개의 숫자를 증가시키고 인쇄합니다.

srand(time(NULL)); // Seeding the random number generator 

for(int i=0; i<20; ++i) 
{ 
    cout << (rand() % 100) << endl; 
} 

난수 생성기의 시딩 같은

시도 뭔가가없이 같은 번호를 프로그램을 실행 할 때마다 생성하는 것 중요하다.

+0

일반적으로 모듈러스를 사용하여 원하는 범위의 임의의 숫자를 얻는 것은 좋지 않습니다. – Trent

+0

@Trent : 제발, 계속하십시오 ... –

+2

이것은 아마도 다른 SO 질문에 대해 더 잘 저장된 주제 일 수 있습니다. 인수는 모듈러스를 사용하여 얻은 결과가 균일하게 분포되어 있지 않다는 것입니다. 다음 두 참조가 있습니다 : http://stackoverflow.com/questions/288739/ 생성 난수 - 균일 - 오버 - 전체 범위 및 http://www.cplusplus.com/reference/clibrary/cstdlib/rand/ – Trent

4

randomNumber에 임의의 값을 할당 한 다음 for 루프의 숫자 0-19로 덮어 쓰게됩니다. 루프 전에는 임의의 숫자가 있습니다.

1

srand()에서 seed로 time() 함수를 사용한 다음 rand()를 사용해야합니다. 당신이 랜드() 결과를 인쇄하지 않는 방법으로

srand(time(NULL)); 

의 srand를 호출 한 후이를 사용

for (int i= 0; i < 20; i++) 
{ 
    int randomNumber = rand() % 100; 
    cout << randomNumber << endl; 
} 
0
#include <iostream> 
#include <cstdlib> 
using namespace std; 

int main() 
{ 
    for (int i = 0; i < 20; i++) 
    { 
     int randomnumber = rand() % 100; 
     cout << randomNumber << endl; 
    } 
    return 0; 
} 

P. 난 당신이 반복적으로 새로운 난수를 얻을 랜드()를 호출 할 필요가 다음이 당신은 제대로 난수 생성기를 필요 농담 :(

3

희망, 그리고

예를 들면 다음과 같습니다.

srand(time(NULL)); 
for (int randomNumber = 0; randomNumber < 20; randomNumber++) 
{ 

    cout << (rand() % 100) << endl; 
} 
관련 문제