Random frage!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Random frage!

    Moin! :)
    Was bringt der Parameter Wert der Random Class?
    Den auch ohne das "Now.TimeOfDay.Milliseconds" funktioniert der Code.
    Freue mich auf eure Antwort.
    BIG THX

    VB.NET-Quellcode

    1. Dim R As New Random(Now.TimeOfDay.Milliseconds)
    Visual Basic.NET 8o
    MS-SQL
    8o
    Um das zu verdeutlichen: Würde man den Wert weglassen oder immer die gleiche Zahl als Seed verwenden, würde bei jedem .Next() zwar eine neue/andere Pseudozufallszahl rauskommen (A -> B -> C -> D). Aber wenn man das Programm neu startet, wäre die Reihenfolge wieder die gleiche (A -> B -> C -> D). Nur durch einen variablen Startwert erhält man bei jedem Programmstart neue (scheinbar) zufällige Zahlen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Naja, nicht ganz.
    Der Konstruktor ohne Parameter ruft einfach den Konstruktor mit Parameter auf und gibt Environment.TickCount mit. Würde man das Programm also neustarten, kommen trotzdem andere Zahlen raus.
    Das ist nur dann ein Problem, wenn man schnell hintereinander mehrere Instanzen der Random-Klasse erstellt.

    Den Millisekunden-Anteil der aktuellen Uhrzeit zu verwenden ist übrigens nicht gut. Es gibt dann nur maximal 1000 verschiedene Zufallszahlenreihen, die man bekommen kann (0 bis 999). Belässt man es allerdings beim Standardkonstruktor, ist diese Zahl viel viel größer.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Cheffboss

    VB.NET-Quellcode

    1. Dim rnd = New Random(42) ' beliebig aber fest
    generiert stets dieselben Zufallszahlen. Für Tests von speziellen Algorithmen, insbesondere auch auf unterschiedlichen Systemen, ist es erforderlich, dieselben Zufallszahlen in den Test zu schicken. Außerdem kann man Listen von Zufallszahlen erzeugen und diese z.B. für MathCad verwenden, um sicherzustellen, dass dieselben Zufallszahlen verwendet werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!