그래서 srand()에 의해 생성 된 숫자를 기반으로 몇 가지 결과를 계산하는 C 코드가 있습니다. 동일한 시드 번호를 사용하면 결과는 항상 동일합니다.C 또는 Java (Android)의 모든 함수가 srand()를 엉망으로 만들 수 있습니까?
이제 Android 앱에서 JNI를 통해 이러한 C 코드를로드합니다. 그러나 동일한 시드 번호가 사용 되더라도 결과는 달라집니다. 시드 번호를 두 번 확인하여 동일한지 확인했습니다. 그러나 Android 프로그램과 원시 코드는 모두 복잡하기 때문에이 문제를 일으키는 원인을 파악하기가 힘듭니다.
확실한 것은, 우리는 자바 프로그램에서 함수를 사용하여 난수를 생성하지 않았다는 것입니다. 아마도 srand()는 매번 다른 시드 번호로 호출되지 않을 것입니다. Java 또는 C의 다른 함수가 srand()가 생성 한 난수를 변경할 수 있습니까?
감사합니다.
업데이트 : 내 질문에 다소 혼란 스러웠습니다. 명확히하기 위해, 내가 비교하고있는 결과는 같은 플랫폼이지만 다른 실행 결과입니다. C 코드는 숫자를 얻기 위해 rand()를 사용하여 결과를 계산합니다. 따라서 srand()의 시드 번호가 항상 같으면 rand()가 얻는 숫자는 같아야하고 결과도 동일해야합니다. 하지만 어쨌든 나는 srand()와 같은 seed를 사용한다. rand()는 다른 숫자를 준다.
[SSCCE] (http://www.sscce.org) – nachokk
'rand()'가 숫자를 생성하는 것을 고려하십시오. 'srand()'만 (re) 생성자를 설정합니다. –
리눅스에서는'int rand_r (unsigned int)'함수가 있는데, 이것은 재진입 성이 있기 때문에 문제가 해결되지 않더라도 문제를 해결할 수 있습니다. –