Генерация равномерно распределенных случайных чисел (0,1) - страница 19

 
AlexEro >>:

2-й алгоритм


void OnStart()
  {
//---
   MathSrand((int)TimeLocal());

   for(int i=0;i<10000;i++)
   {
   Print(DRNG_Tausworthe());
   }

  }
//+------------------------------------------------------------------+

// Tausworthe is a nice option. It gives 2^88 non-repetitive numbers.
// A handful of primitive operations, and extremely good randomness;
static long s1 = 1423667, s2 = 2234, s3 = 34567 ; // any non-zero numbers
long RNG_Tausworthe ()
{       long b ;
        b = ( (s1 << 13) ^ s1) >> 19;
        s1 = ( (s1 & 4294967294) << 12) ^ b;
        b = ( (s2 << 2) ^ s2) >> 25;
        s2 = ( (s2 & 4294967288) << 4) ^ b ;
        b = ( (s3 << 3) ^ s3) >> 11 ;
        s3 = ( (s3 & 4294967280) << 17) ^ b ;
        return (s1 ^ s2 ^ s3);
}
// Or, simply:
// s1=((s1&4294967294)<<12)^(((s1<<13)^s1)>>19) ;
// s2=((s2&4294967288)<<4)^(((s2<<2)^s2)>>25) ;
// s3=((s3&4294967280)<<17)^(((s3<<3)^s3)>>11) ;
// return (s1^s2^s3) ;

//............................./ DRNG_Tausworthe \.................................
double DRNG_Tausworthe (void)
{       return ( (double) RNG_Tausworthe () * 2.3283064365e-10);
}

Что я не так сделал?

 
joo >>:

2-й алгоритм


Что я не так сделал?

Побитовые операции. И не Вы, а вероятно MetaQuotes.

 

Извиняюсь, если этот вопрос уже затрагивался, открыл отдельную тему по интересующему меня вопросу по ГСН (ГПСН):

https://forum.mql4.com/ru/31779