Bessere Zufahlszahlen (Marsenne Twister)

    • VB6

      Bessere Zufahlszahlen (Marsenne Twister)

      Da der Pseudo-Zufalls-Generator (bzw. dessen Algorithmus) von Visual Basic 6 und VBA sehr veraltet ist, hab ich den Marsenne Twister für VB rausgesucht.
      Hat etwa ne Stunden gedauert :(

      Marsenne Twister für VB
      Der Code funktioniert laut Porter problemlos in VB6 und VBA.

      Um den Zufallsgenerator zu nutzen, kopiert man einfach den gesamten Code aus dem Link oben in ein eigenes Modul.
      Bevor man die darin enthaltenen Funktionen nutzt, sollte man noch die Sub init_genrand(seed) mit einem variablen Wert, z.B. Systemzeit oder GetTickCount, aufrufen.


      Beispielcode:

      Visual Basic-Quellcode

      1. Private Sub Form_Load()
      2. 'In Form_Load oder der Main-Sub aufrufen!
      3. init_genrand(int(timer*100))
      4. End Sub
      5. Private Sub Command1_Click()
      6. 'die erste Methode sollte nur für kleinere Zahlen-Differenzen verwendet werden.
      7. Msgbox "Eine Zufallszahl zwischen 1 und 100: " & _
      8. (genrand_int31 mod 100) + 1
      9. 'die zweite Methode funktioniert wie Rnd
      10. Msgbox "Eine andere Zufallszahl zwischen 1 und 100: " & _
      11. int(genrand_real2 * 100) + 1
      12. End Sub


      Hoffe ich bin nicht der Einzige mit Interesse dran. ;)


      so long..
      Andy



      Keywords: Visual Basic, VB6, VB, VBA, Marsenne Twister, Zufall, Zufallszahlen, Random, Better Random Numbers

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mad Andy“ ()