내 프로그램에는 매번 무작위 양의 정수를 생성해야하는 코드가 있습니다. 난수를 생성하지만 한 번만 생성합니다. 그 후 동일한 코드를 실행하면 동일한 값을 갖게되고 코드가 쓸모 없게됩니다.함수 srand()를 time.h와 함께 사용하는 방법은 무엇입니까?
나는 랜드 기능을 시작하고 나는 time.h 헤더 파일로 부터 srand() 기능을 사용하지만, 여전히 제대로 작동하지 않습니다.
#define size 10
for(i=0;i<size;i++)
Arr[i] = rand()%size;
먼저 호출 (임의) : (이전과 같은 임의하지만 동일)
6 0 2 0 6 7 5 5 8 6
두 번째 호출 :
6 0 2 0 6 7 5 5 8 6
나중에 나는 스택 오버플로 질문을 방문하고 내가 읽은 srand() 함수는 다음과 같이 사용했습니다.
#include<time.h>
for(i=0;i<size;i++)
Arr[i] = srand(time(NULL));
먼저 전화 :
-10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327
두 번째 전화 :
-10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326
그것은 나에게 다른 (그러나 임의 값)을주고있다. Arr [i]을 부호없는 정수으로 정의했지만 여전히 음수 값을 갖습니다.
시드를 설정 했습니까? 시간 함수를 사용하여 시드를 설정하십시오. – Magn3s1um
'rand' 제너레이터를 시드하려면'srand'를 한 번만 호출하면됩니다. 매번'srand'를 호출하여 전화 번호를 얻지 마십시오. – TJD
[man page] (http://linux.die.net/man/3/rand)를 읽어야합니다.이 기능은 어떻게 작동하는지 설명하고 제공합니다. 작업 예제. – Aya