2012-01-02 2 views
1

나는 잠시 동안이 방법을 사용해 왔지만 지금까지 아무런 운이 없었습니다.iOS의 고정밀 난수

iOS에서 두 개의 매우 정확한 숫자 사이에서 임의의 숫자를 검색하는 가장 쉬운 방법은 무엇입니까?

예를 들어, 41.37783830549337와 41.377730629131634 사이의 난수를 원한다면 어떻게해야합니까?

미리 감사드립니다.

편집 :이 시도 :

double min = 41.37783830549337; 
double max = 41.377730629131634; 
double test = ((double)rand()/RAND_MAX) * (max - min) + min; 
NSLog(@"Min:%lf, max:%lf, result:%lf",min,max,test); 

을하지만 결과는 내가 기대했다으로 꽤 정확하지 않았다,이 ::

Min:41.377838, max:41.377731, result:41.377838 

답변

6

당신은 출력을 정상화 할 수처럼 종료 어떤 범위 rand의 당신이 원하는 :

((double)rand()/RAND_MAX) * (max - min) + min 

[참고 :이 페이지입니다 ure C, Obj-C에서 동등하게 작동한다고 가정합니다.]

[참고 2 : double을 적절하게 선택한 데이터 유형으로 바꿉니다.]

[참고 3 : rand을 원하는대로 임의의 숫자 소스로 바꿉니다.]

+0

나는 이것을 시도했다 :'double min = 41.37783830549337; double max = 41.377730629131634; double test = ((double) rand()/RAND_MAX) * (max - min) + min; NSLog (@ "최소 : % lf, 최대 : % lf, 결과 : % lf", 최소, 최대, 테스트); -하지만 원하는 정밀도를 제공하지 못하는 것처럼 보입니다. 41.377838, 최대 : 41.377731, 결과 : 41.377838 –

+0

@ 오스카 : 숫자를 표시 할 때 숫자 형식을 지정하는 방식의 결과입니다. 나는 Obj-C를 모른다. 그러나'NSLog'가'printf'와 같은 것이라면 어떻게 동작 하는가? '% .15f'. –

+0

@Oscar : 배정 밀도는 대략 15-16 자리의 정확도에 해당합니다. 그 이상이 필요한 경우 더 정확한 유형이 필요합니다. 그러나 이는 범위에서 난수를 생성하는 것보다 별개의 문제입니다. –