Generieren Sie zufällige Werte in C #
Wie kann ich generate random Int64 und UInt64-Werte mit Hilfe der Random
Klasse in C#?
InformationsquelleAutor der Frage SyncMaster | 2009-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann ich generate random Int64 und UInt64-Werte mit Hilfe der Random
Klasse in C#?
InformationsquelleAutor der Frage SyncMaster | 2009-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sollte den trick tun. (Es ist eine Erweiterung Methode, so dass Sie können es nennen, genau wie Sie sagen, die normalen
Next
oderNextDouble
Methoden auf eineRandom
Objekt).Ersetzen Sie einfach
Int64
mitUInt64
überall, wenn Sie wollen, unsigned Integer statt und alles sollte funktionieren.Hinweis: Da kein Zusammenhang war vorgesehen, bezüglich der Sicherheit oder der gewünschten Zufälligkeit der generierten Nummern (in der Tat die OP ausdrücklich erwähnt die
Random
Klasse), in meinem Beispiel einfach die Angebote mitRandom
Klasse ist, die die bevorzugte Lösung, wenn die Zufälligkeit (oft quantifiziert werden, da Informationen zu Entropie) ist kein Problem. Als eine Angelegenheit von Interesse, siehe die anderen Antworten, erwähnenRNGCryptoServiceProvider
(der RNG in dieSystem.Security
namespace), die verwendet werden können, nahezu identisch.InformationsquelleAutor der Antwort Noldorin
Verwenden
Random.NextBytes()
undBitConverter.ToInt64
/BitConverter.ToUInt64
.Beachten Sie, dass die Verwendung
Random.Next()
zweimal die Verschiebung einen Wert und dann den ORing/hinzufügen funktioniert nicht.Random.Next()
erzeugt nur die nicht-negativen ganzen zahlen, d.h. es erzeugt 31 bit, nicht 32, so das Ergebnis von zwei Anrufe nur produziert, 62 random bit anstelle der 64 bit erforderlich, um decken das gesamte Spektrum derInt64
/UInt64
. (Guffa Antwort zeigt, wie es zu tun mit drei AufrufeRandom.Next()
aber.)InformationsquelleAutor der Antwort Jon Skeet
Hier gehen Sie, nutzt dieser die crytpo Dienstleistungen (nicht der Random-Klasse)die (theoretisch) eine bessere RNG dann die Random-Klasse. Sie könnten leicht machen, diese eine Erweiterung des Random-oder machen Sie Ihre eigene Random-Klasse, wo die RNGCryptoServiceProvider ist eine Klasse-level-Objekt.
InformationsquelleAutor der Antwort Muad'Dib
Können Sie bit-Verschiebung, um gemeinsam eine 64-bit Zufallszahl von 31-bit-Zufallszahlen, aber Sie haben, um drei 31-bit-zahlen, um genug bits:
InformationsquelleAutor der Antwort Guffa
Ich immer verwenden Sie diese, um meine random seed (Fehlerüberprüfung aus Gründen der Kürze entfernt):
random.org verwendet atmosphärischen Rauschen zu erzeugen, die Zufälligkeit und ist anscheinend verwendet für Lotterien und so.
InformationsquelleAutor der Antwort sipwiz
Ihnen nicht sagen, wie Sie gehen zu verwenden, diese zufälligen zahlen...beachten Sie, dass Werte, die von Random nicht "kryptographisch sicher" und sollte Sie nicht verwendet werden, für Dinge, die mit (großen) Geheimnisse oder (viel) Geld.
InformationsquelleAutor der Antwort Ðаn
Könnten Sie eine
byte
array mit zufälligen Daten füllen und anschließend konvertieren Sie es zulang
(Int64
) und ulong (UInt64
).InformationsquelleAutor der Antwort Samuel
Anderen Antwort mit
RNGCryptoServiceProvider
stattRandom
. Hier können Sie sehen, wie Sie die MSB-so das Ergebnis ist immer positiv.InformationsquelleAutor der Antwort sventevit
InformationsquelleAutor der Antwort