2017-12-21 6 views
0

난 (100 내지 1) 난수 발생기를 생성 배열되지만 때마다 I 10 배 실행 그것은 그것이 1C++ 난수

for (int x=0; x < 10; x++) { 
     arr[x]=rand() % 100 + 1; 

100 루프 사이에 동일한 열 개 번호를 출력 실행할 배열에 10 개의 정수가 포함되어 있기 때문입니다. 비록이 실행마다, 출력 : 42, 68, 35, 1, 70, 25, 79, 59, 63, 65

코드의 행에서

이 출력

for (int z=0; z<10;z++) { 
     cout << arr[z]<<", "; 
} 

사람 수 왜 이런 일이 벌어지는 지 알겠습니까?

+1

여러분의 프로그램은 같은 종자 각 시간을 사용합니다. – Carlos

+1

언제든지'srand'를 부르시겠습니까? –

+1

"왜 이런 일이 일어나는 지 알 수 있습니까?" http://www.cplusplus.com/reference/cstdlib/rand/ – Slava

답변

0

rand()을 사용하면 주어진 입력에서 srand()까지 동일한 시퀀스가 ​​생성됩니다. 다른 단어는 일반적으로 초기 시드 값에서 생성 된 동일한 숫자를 사용합니다. 이 기능들은 사용시 눈살을 찌게하는 것으로 간주되며 심지어는 으로 표시되어 현대의 std 의사 난수 생성기 라이브러리를 선호하기를 원합니다.

난수를 생성하려면 대신 <random> 헤더의 라이브러리를 사용해보십시오.

는 여기에서 문서화를 찾을 수 있습니다 cppreference::random

+0

첫 번째 문장의 내용이 분명하지 않습니다. 의도적으로'rand'는'srand'에 특정 입력을 주면 항상 같은 시퀀스를 생성합니다. –

+0

@OliverCharlesworth 사실; 나는 단지''라이브러리의 더 나은 사용법을 강조하려고했다. –