Erzeugung von gleichmäßig verteilten Zufallszahlen (0,1) - Seite 10

 
alsu >>:

Вы не правы, если стоит задача обеспечить генерацию последовательности СЧ заданной разрядности (заранее неизвестной), о чем и спрашивал топикстартер, то важна именно случайность - только тогда можно получать последовательности чисел с разрядностью по выбору и с "хорошими" характеристиками. Если же комбинировать значения, выдаваемые генератором ГПСЧ, то характеристики процесса не будут в общем случае "хорошими" и тот же DIEHARD он скорее всего не пройдет.

Haben Sie gesehen, dass es sich nicht um einen PRNG, sondern um einen RNG handelt? :)

 
SProgrammer >>:

Вы видели что это не ГПСЧ, а именно ГСЧ? :)

RNG unterscheidet sich von PRNG dadurch, dass es eine Entropiequelle hat (d. h. Zufälligkeit unabhängig vom verwendeten Erzeugungsalgorithmus). In meinem Beispiel ist er vorhanden - in diesem Fall ist es ein Uhrenzähler.

 
alsu >>:

ГСЧ отличается от ГПСЧ наличием источника энтропии (т.е. случайности, не зависящей от используемого алгоритма генерации). В приведенном мной примере он присутствует - в данном случае это счетчик тактов.

Ich spreche nur über das, was ich verlinkt habe, sorry. Und wie man sie benutzt. :) Es handelt sich nicht um einen PRNG, sondern um einen RNG. :)


Aber ganz allgemein gilt: Jeder Generator, der nicht auf externe Quellen zurückgreift, ist kein Zufallszahlengenerator, sondern nur ein Pseudo-Zufallsgenerator. JEDE :)

 
Richtig, der absolute Zufall ist eine mathematische Abstraktion. Es gibt nur ein gewisses Maß an Annäherung und ein gewisses Maß an Bewusstsein für das Objekt.
 
if(MathRand()+1>16383.5){rand+=MathPow(2,- i);

gumgum, MathPow() ist eine extrem langsame Funktion. Ich habe kürzlich eine Studie veröffentlicht. Und hier haben Sie einen ganzzahligen Grad, und es ist eine natürliche Zahl. Schreiben Sie einen cleveren Emulator von natürlich bis zum natürlichen Grad.

 

1000000 Zahlen rstep=32 rsign=1 Geschwindigkeit = 4.97700000

if(MathRand()+1>16383.5){rand+=MathPow(2,- i);}
1000000 Zahlen rstep=32 rsign=1 Geschwindigkeit = 2.44900000
double ranD(int rsign,int rstep)
{
double div=2;
double rand=0; 
   for(int i=1; i<= rstep; i++)
   {
   //if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
   if(MathRand()+1>16383.5){rand+=1/ div;}
   div= div*2;   
   }
      if( rsign==1)
         {
         rand=2*rand-1;
         }
return(rand);
}




 
Kann jemand zum Beispiel eine DLL für die Zufallszahlengenerierung erstellen? Ich danke Ihnen.
 
gumgum >>:
Может кто нибудь сделает dll например из Генерация случайных чисел? Спасибо.

und nicht auf eigene Faust?

 
alsu >>:

а самостоятельно нэ?


Ich weiß nicht, wie ich eine DLL erstellen kann. Ich lade gerade VS herunter, ich werde es herausfinden und schreiben. Gerade, wer bereits eine dll erstellt hat, es ist nicht so schwierig (ich denke so), wenn die Quellen alle verfügbar sind....
 
gumgum >>:


Я не умею создавать dll. Сейчас качаю VS, разберусь и напишу. Просто кто уже создавал dll это не так уж сложно(я так думаю) если исходники все имеются....

Es gibt einen aktuellen Artikel im fünften Forum zu diesem Thema, alles für Anfänger mit Bildern und Beispielen