Forum: PC-Programmierung Welche Startwerte für Mersenne Twister Algorithmus ?


von Christian J. (Gast)


Lesenswert?

Hallo,

weiss vielleicht jemand, wie ich den oder die Startwerte für diesen 
Algorithmus ändern kann bzw welche das sind? Ich möchte die Funktion in 
2 aufteilen, so dass sich immer andere Zufalls Folgen ergeben, je 
nachdem welcher Wert aus dem A/D Wandler ausgelesen wird.  Da ich nur 16 
Bit Zahlen brauche nehme ich den Wert unten % 0xFFFF, hoffe das ist kein 
Problem für die Verteilung der Zahlen. Die Periodendauer ist 10^240, 
also schon ganz nett.

Gruss,
Christian


1
// Mersenne - Twister Algorithmus
2
uint32_t TT800(uint16_t range) {
3
#define N  25
4
#define M   7
5
   static const uint32_t A[2] = { 0, 0x8ebfd028 };
6
   static uint32_t y[N];
7
   static int index = N+1;
8
   uint32_t  e;
9
10
   if (index >= N) {
11
     int k;
12
     if (index > N) {
13
        unsigned r = 9, s = 3402;
14
        for (k=0; k<N; ++k) {
15
          r = 509845221 * r + 3;
16
          s *= s + 1;
17
          y[k] = s + (r >> 10);
18
        }
19
     }
20
     for (k=0; k<N-M; ++k)
21
        y[k] = y[k+M] ^ (y[k] >> 1) ^ A[y[k] & 1];
22
     for (; k<N; ++k)
23
        y[k] = y[k+(M-N)] ^ (y[k] >> 1) ^ A[y[k] & 1];
24
     index = 0;
25
   }
26
27
   e = y[index++];
28
  /* Tempering */
29
   e ^= (e <<  7) & 0x2b5b2500;
30
   e ^= (e << 15) & 0xdb8b0000;
31
   e ^= (e >> 16);
32
   return (e % range);
33
#undef N
34
#undef M

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Christian J. (Gast)


Lesenswert?

kenne ich, daher ist der Code. Nützt mir aber nichts für die Frage.

von Max M. (jens2001)


Lesenswert?

Christian J. schrieb:
> kenne ich, daher ist der Code.

Warum veränderst du dann den Code in dem du den Teil entfernst der für 
das initialisieren zuständig ist?
Und warum mnachst du dann einen Tread genau danach auf?
Oder was Glaubst du was die Zeilen
1
 /* Initialisiere y mit Pseudozufallszahlen */
2
    y[0] = seed;
bedeuten?

von Christian J. (Gast)


Lesenswert?

Max Mustermann schrieb:
> der was Glaubst du was die Zeilen /* Initialisiere y mit
> Pseudozufallszahlen */
>     y[0] = seed;
>  bedeuten?

Lesen bildet, vor allem den ganzen Text.... wenn man etwas runter 
scrollt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.