그것은 4차 포럼에서 여러 번 논의되었습니다. MathRand를 검색하면 15페이지 이상의 결과가 반환됩니다.
예를 들어 다음 주제:
https://www.mql5.com/ru/forum/123337
https://www.mql5.com/ru/forum/111855
- www.mql5.com
MathRand()가 값을 얻는 방법을 알려주세요.
MathRand()가 명시된 범위에 고르게 분포될 것으로 예상할 수 있습니까?
오래 전에 php로 확인했습니다.
난수가 많이 생성된 후 그래프가 생성되는 것 같습니다.
또는 예를 들어 대략적인 추정치를 위해 동일한 숫자의 수를 찾을 수 있습니다.
수백 개의 숫자를 생성하고 파일에 쓴 다음 최소한 Excel에서 그래프를 작성하십시오.
스트링고 ,
나는 읽기를 위해 제안 된 모든 링크를 마스터하지 않았습니다))
메시지의 수와 토론 참가자의 구성을 살펴보면서 다음과 같은 결론을 내렸습니다.
- MathRand()를 안전하게 사용할 수 있습니다.
- "해상도" 0..32767이 충분하지 않은 경우 MathRand()*MathRand()를 사용할 수 있습니다. - 분포가 한 방향 또는 다른 방향으로 강하게 "비뚤어지지" 않습니다.
미스터프로프 ,
대략적인 견적을 내기 쉽습니다
정수 A[32768] ;
for (int i=0; i<100000000; i++)
A[MathRand()]++;
하지만 왜?
내 목적을 위해 개발자의 의견으로 충분합니다.
- www.mql5.com
퍼지 논리 알고리즘에서 무작위로 가중치를 이동해야 합니다.
가장 중요한 것은 한 방향으로 일정한 "막힘"이 없다는 것입니다.
물론 "hoo"에 감사하지만 제 경우에는 중복됩니다))
계정에
" - "해상도" 0..32767이 충분하지 않은 경우 MathRand()*MathRand() 를 사용할 수 있습니다. - 분포가 한 방향 또는 다른 방향으로 강하게 "비뚤어지지" 않습니다. "
흥분했다...
기대치는 범위의 중간 왼쪽으로 이동합니다(1/4 * 32768^2 로 의심되지만 더 이상 확실하지 않음)
일반적으로 내 진술은 잘못되었습니다
계정에
" - "해상도" 0..32767이 충분하지 않은 경우 MathRand()*MathRand()를 사용할 수 있습니다. - 분포가 한 방향 또는 다른 방향으로 강하게 "비뚤어지지" 않습니다. "
흥분했다...
기대치는 범위의 중간 왼쪽으로 이동합니다(1/4 * 32768^2 로 의심되지만 더 이상 확실하지 않음)
일반적으로 내 진술은 잘못되었습니다
hmslo drange [0, (2^rstep)-1]
long ranD( int rstep) { long div= 1 ; long r= 0 ; for ( int i= 1 ;i<=rstep;i++) { if ( MathRand ()+ 1 > 16383.5 ){ if (i== 1 ){r= 1 ;} else {r+=div;}} div=div* 2 ; } return (r); }
long 대신 int 또는 double 또는 ulong을 사용할 수 있습니다.
고무 ,
rstep [0, 2^rstep-1] - 이 매개변수가 무엇인지 이해하지 못했습니다.
문제:
이중 변수는 소수점 이하 8자리까지의 정확도로 무작위로 변경해야 합니다.
MathRand()/32768은 0.00003 단계를 제공합니다. 충분하지 않습니다.
MathRand()를 사용하여 이산도가 0.00000001인 (0..1) 임의 값에 균일하게 분포되는 방법은 무엇입니까?
rsign=1(-1.1), rsign=0(0.1)
double ranD( int rsign, int rstep) { double div= 2 ; double r= 0 ; for ( int i= 1 ;i<=rstep;i++) { if ( MathRand ()+ 1 > 16383.5 ){r+= 1 /div;} div=div* 2 ; } if (rsign== 1 ) { r= 2 *r- 1 ; } return (r); }
rstep은 정도
MathRand() 가 값을 얻는 방법을 알려주세요.
MathRand()가 명시된 범위에 고르게 분포될 것으로 예상할 수 있습니까?