2016-06-23 2 views
-2

erzeugen Ich möchte eine Zufallszahl generieren, die ein int in C# auffüllt.Wie kann ich eine 100% Zufallszahl zwischen 1 und dem Maximum eines 32 Bit int in C#

Ich habe gehört, dass manchmal Zufallszahlen nicht zuverlässig sind. Wäre das ein Problem für mich, eine Zufallszahl zu generieren?

Kann jemand dazu kommentieren und eine sehr zuverlässige Möglichkeit vorschlagen, eine Zufallszahl zwischen 1 und dem Maximum eines 32-Bit-int zu generieren?

+1

Wenn Ihre Anforderung nur eine einzige Zufallszahl in einem so großen Bereich ist, wird es 100% zufällig sein (nicht wiederholen). Und lassen Sie mich wissen, was Sie in diesem Fall mit Reliable gemeint haben? Ich denke, die Frage sollte klarer und spezifischer sein. –

+2

Was ist die Zufallszahl * für *? Was meinst du mit "zuverlässig"? – Blorgbeard

Antwort

3
Random random = new Random(); 
for(someloop) { 
    int randomValue = random.Next(0, int.MaxValue) + 1; 
} 

Beachten Sie, dass dies nur pseudozufällig ist. In diesem Beispiel wird eine zufällige Instanz außerhalb der Schleife erstellt, sodass sie nicht immer mit der gleichen aktuellen Zeit erneut gestartet wird. Wenn Sie beliebig oft verwenden, können Sie sogar einen Singleton-Wrapper erstellen und eine zufällige Instanz für Ihre gesamte Anwendung verwenden (beachten Sie Threading-Probleme von grob).

+0

"zwischen 1 und ..." – Blorgbeard

+0

Eigentlich müssten Sie 'new Random(). Next (0, int.MaxValue) + 1;' weil '.Next' hat eine exklusive obere Grenze, so dass der größte Wert Sie könnten get wäre "int.MaxValue - 1". –

+0

Vielen Dank. Können Sie mir ein Beispiel geben, wie ich das in einer Schleife verwenden könnte? Gibt es eine Möglichkeit, den .Next-Wert in der Schleife zu bekommen? – Alan2

Verwandte Themen