균일하게 분포된 난수 생성(0,1)

 

외부 *.dll 없이 MQL 도구를 사용하여 균일하게 분포된 난수(0,1)를 생성하시겠습니까?

 
정수 MathRand ( )
이 함수는 0에서 32767 사이의 의사 난수 정수를 반환합니다. 함수를 처음 호출하기 전에 MathSrand 함수 를 사용하여 의사 난수 생성기를 초기화해야 합니다.
예시:
 MathSrand(TimeLocal());
// 10개의 숫자를 표시합니다.
for(int i=0;i<10;i++ )
Print("임의 값 ", MathRand());
 
sergeev >> :
정수 MathRand ( )
이 함수는 0에서 32767 사이의 의사 난수 정수를 반환합니다. 함수를 처음 호출하기 전에 MathSrand 함수를 사용하여 의사 난수 생성기를 초기 상태로 재설정해야 합니다.
예시:


이건 내가 알아!

범위 (0,1)에 대해 묻고 있습니다.

 

동지는 0과 1이 고르게 분포되어 있으므로 짝수와 홀수로 나눕니다.

 MathSrand ( TimeLocal ( ) ) ;
   // Отображает 10 чисел.
   for ( int i = 0 ; i < 10 ; i + + )
     Print ( "произвольная величина " , MathMod ( MathRand ( ) , 2 ) ) ;

그런 곳.

 
Urain писал(а) >>

동지는 0과 1이 고르게 분포되어 있으므로 짝수와 홀수로 나눕니다.

그런 곳.

또는 주어진 범위의 실수는 의미합니다. 다음과 같이:

MathRand() / 32767.0
 

소리가 바로 이해가 안가서 범위가 필요하면 그때

 MathSrand ( TimeLocal ( ) ) ;
   // Отображает 10 чисел.
   for ( int i = 0 ; i < 10 ; i + + )
     Print ( "произвольная величина " , MathRand ( ) / 32768 ) ;

그런 곳.

 
lea >> :

또는 주어진 범위의 실수는 의미합니다. 다음과 같이:


정확히.

 MathSrand ( TimeLocal ( ) ) ;
  // Отображает 10 чисел.
  for ( int i = 0 ; i < 10 ; i + + )
     Print ( "произвольная величина " , MathRand ( ) / 32768 ) ;
약한. 더 강력한?
 
gumgum >> :

정확히.

약한. 더 강력한?
 MathSrand ( TimeLocal ( ) ) ;
...............
...............
...............
//---------------------------Непрерывный Генератор СЧ---------------------
double CRG(double min,double max) { return(min+((max-min)*MathRand()/32767.0));}
//=======================================================================

어디:

min - 범위의 시작

최대 - 범위의 끝.


귀하의 경우 다음과 같습니다.

 void Start()
{
MathSrand ( TimeLocal ( ) ) ;
...............
...............
...............
double p=CRG(0.0,1.0);
}

//---------------------------Непрерывный Генератор СЧ---------------------
double CRG(double min,double max) { return(min+((max-min)*MathRand()/32767.0));}
//=======================================================================
 

그렇다면,

double ran= MathRand()/32768.;
n/32768 사이. 및 n+1/32768. ne Z & ne [0.32767]은 비어 있습니다. 이것은 좋지 않다.
 
joo >> :

어디:

min - 범위의 시작

최대 - 범위의 끝.


귀하의 경우 다음과 같습니다.


==
MathRand()/32768.
:(
 
gumgum писал(а) >>

그렇다면,

n/32768 사이. 및 n+1/32768. ne Z & ne [0.32767]은 비어 있습니다. 이것은 좋지 않다.

자기야, 임의적으로 서로 가까운 실수 사이에 셀 수 없는 실수 집합이 있다는 것을 알고 있습니까?

구간(0,1)이 무한선의 거듭제곱과 같다는 것을 알고 있습니까?

그렇지 않다면 그것에 대해 생각하십시오.

그렇다면 질문을 올바르게 작성하십시오.

동시에 어떤 밀도(단위 길이당 조각)로 미드레인지 세대를 원하십니까?

아니면 RNG가 (0,1) 간격 의 모든 숫자 를 생성하기를 원하십니까?