Wenn Sie wissen möchten, ob Ihre Zufallszahlen schlecht sind, verwenden Sie meine ChiSquare-Bibliothek, um dies herauszufinden: github.com/kaisellgren/ChiSquare
Sie sollten besser /dev/urandommit der FileKlasse lesen, wenn Sie kryptografisch starke Zufallszahlen möchten.
Turm
Wie wäre es mit negativen Zufallszahlen (Doppel)? Ich versuche eine randomRange-Methode zu implementieren, die zum Beispiel von -0,8 bis 0,9 generiert ... das Ergebnis wäre zum Beispiel -0,32
just_a_dude
2
@just_a_dude, das klingt nach einer perfekten Frage für den Stackoverflow. Erwägen Sie, eine neue Frage zu erstellen :)
Seth Ladd
1
Methode, die zum Beispiel von -0,8 bis 0,9 erzeugen würde, ist einfach. Sie müssen nur Werte zuordnen. Ihr Bereich beträgt 0,8 + 0,9 = 1,7. Wenn Sie also rng.nextInt (1700) eingeben, erhalten Sie eine Zahl zwischen 0 und 1700. Teilen Sie durch 100 und reduzieren Sie -0,8. Bedeutung yourRnd = rng.nextInt (1700) /100.0-0.8. Es gibt mehr Optionen, die Sie verwenden können, als würden Sie nicht einmal nextInt verwenden, sondern doppelt 0-1, multipliziert mit 1,7 und verschoben -0,8
Veljac
25
Sie können dies über ein RandomKlassenobjekt erreichen random.nextInt(max), das sich in der dart:mathBibliothek befindet. Die nextInt()Methode erfordert eine maximale Grenze. Die Zufallszahl beginnt bei 0und das maximale Limit selbst ist exklusiv.
import'dart:math';Random random =newRandom();int randomNumber = random.nextInt(100);// from 0 upto 99 included
Wenn Sie das Mindestlimit hinzufügen möchten, fügen Sie dem Ergebnis das Mindestlimit hinzu
int randomNumber = random.nextInt(90)+10;// from 10 upto 99 included
@ Tim, danke, dass du es bemerkt hast. Ich hatte gerade den Code aus der vorherigen Zeile kopiert. Es wurde behoben.
Samir Rahimy
17
Wenn Sie kryptografisch sichere Zufallszahlen benötigen (z. B. zur Verschlüsselung) und sich in einem Browser befinden, können Sie die DOM-Kryptografie-API verwenden :
int random(){final ary =newInt32Array(1);
window.crypto.getRandomValues(ary);return ary[0];}
Dies funktioniert in Dartium, Chrome und Firefox, aber wahrscheinlich nicht in anderen Browsern, da dies eine experimentelle API ist.
Eine sichere zufällige API wurde gerade hinzugefügt dart:math
newRandom.secure()
dart:mathRandomfügte einen secureKonstruktor hinzu , der einen kryptografisch sicheren Zufallsgenerator zurückgibt, der für jeden generierten Zufallswert aus der vom Einbetter bereitgestellten Entropiequelle liest.
die window.crypto.getRandomValues()im Browser und an das Betriebssystem delegiert (wie urandomauf dem Server)
Diese neue API ist in Version 1.14-dev oder höher verfügbar.
Seth Ladd
7
Ich kann keinen Kommentar abgeben, da ich gerade dieses Konto erstellt habe. Ich wollte jedoch darauf hinweisen, dass die Lösung von @ eggrobot78 funktioniert, sie ist jedoch exklusiv in Dart, sodass sie nicht die letzte Nummer enthält. Wenn Sie die letzte Zeile in "r = min + rnd.nextInt (max - min + 1);" ändern, sollte sie auch die letzte Zahl enthalten.
Erläuterung:
max =5;
min =3;Random rnd =newRandom();
r = min + rnd.nextInt(max - min);//max - min is 2//nextInt is exclusive so nextInt will return 0 through 1//3 is added so the line will give a number between 3 and 4//if you add the "+ 1" then it will return a number between 3 and 5
Eine alternative Lösung könnte die Verwendung des folgenden Codes DRandom sein . Diese Klasse sollte mit einem Samen verwendet werden. Es bietet eine vertraute Schnittstelle zu dem, was Sie in .NET erwarten würden. Es wurde aus monos Random.cs portiert. Dieser Code ist möglicherweise nicht kryptografiesicher und wurde nicht statistisch getestet.
Ich habe gerade diese kleine Klasse geschrieben, um normale Zufallszahlen zu generieren ... es war ein anständiger Ausgangspunkt für die Überprüfung, die ich durchführen muss. (Diese Sätze verteilen sich auf einer "glockenförmigen" Kurve.) Der Startwert wird zufällig festgelegt. Wenn Sie jedoch einen Satz neu generieren möchten, können Sie einfach einen bestimmten Startwert übergeben, und derselbe Satz wird generiert.
Dann können Sie es einfach so verwenden, um den Mittelwert von Sätzen von 1000 Zahlen zu überprüfen, die zwischen einem unteren und einem oberen Grenzwert erzeugt wurden. Die Werte werden in der Klasse gespeichert, damit nach der Instanziierung auf sie zugegriffen werden kann.
Lassen Sie mich diese Frage mit einem praktischen Beispiel in Form einer einfachen Würfelwurf-App lösen, die beim Tippen 1 von 6 Würfelgesichtsbildern zufällig auf den Bildschirm ruft.
Deklarieren Sie zuerst eine Variable, die Zufallszahlen generiert (vergessen Sie nicht, dart.math zu importieren). Deklarieren Sie dann eine Variable, die die anfängliche Zufallszahl innerhalb von Einschränkungen zwischen 1 und 6 als Ganzzahl analysiert.
Beide Variablen sind statisch privat, um einmal initialisiert zu werden. Dies ist keine große Sache, aber es wäre eine gute Praxis, wenn Sie eine ganze Reihe von Zufallszahlen initialisieren müssten.
Erstellen Sie nun als Kind ein Widget zur Gestenerkennung mit einem ClipRRect, um beim Tippen eines der sechs Würfelgesichtsbilder auf den Bildschirm zurückzugeben.
Jedes Mal, wenn Sie auf den Bildschirm tippen, wird eine neue Zufallszahl generiert, auf die verwiesen wird, um auszuwählen, welches Würfelgesichtsbild ausgewählt wird.
Antworten:
Verwenden Sie die
Random
Klasse vondart:math
:Dieser Code wurde zum Zeitpunkt des Schreibens mit der Dart VM und dart2js getestet.
quelle
/dev/urandom
mit derFile
Klasse lesen, wenn Sie kryptografisch starke Zufallszahlen möchten.Sie können dies über ein
Random
Klassenobjekt erreichenrandom.nextInt(max)
, das sich in derdart:math
Bibliothek befindet. DienextInt()
Methode erfordert eine maximale Grenze. Die Zufallszahl beginnt bei0
und das maximale Limit selbst ist exklusiv.Wenn Sie das Mindestlimit hinzufügen möchten, fügen Sie dem Ergebnis das Mindestlimit hinzu
quelle
Wenn Sie kryptografisch sichere Zufallszahlen benötigen (z. B. zur Verschlüsselung) und sich in einem Browser befinden, können Sie die DOM-Kryptografie-API verwenden :
Dies funktioniert in Dartium, Chrome und Firefox, aber wahrscheinlich nicht in anderen Browsern, da dies eine experimentelle API ist.
quelle
Hier ist ein Ausschnitt zum Generieren einer Liste von Zufallszahlen
Dadurch wird eine Liste mit 12 Ganzzahlen von 0 bis einschließlich 99 generiert.
quelle
Eine sichere zufällige API wurde gerade hinzugefügt
dart:math
die
window.crypto.getRandomValues()
im Browser und an das Betriebssystem delegiert (wieurandom
auf dem Server)quelle
Ich kann keinen Kommentar abgeben, da ich gerade dieses Konto erstellt habe. Ich wollte jedoch darauf hinweisen, dass die Lösung von @ eggrobot78 funktioniert, sie ist jedoch exklusiv in Dart, sodass sie nicht die letzte Nummer enthält. Wenn Sie die letzte Zeile in "r = min + rnd.nextInt (max - min + 1);" ändern, sollte sie auch die letzte Zahl enthalten.
Erläuterung:
quelle
Versuchen Sie dies, Sie können den Min / Max-Wert steuern:
quelle
Eine alternative Lösung könnte die Verwendung des folgenden Codes DRandom sein . Diese Klasse sollte mit einem Samen verwendet werden. Es bietet eine vertraute Schnittstelle zu dem, was Sie in .NET erwarten würden. Es wurde aus monos Random.cs portiert. Dieser Code ist möglicherweise nicht kryptografiesicher und wurde nicht statistisch getestet.
quelle
Ich habe gerade diese kleine Klasse geschrieben, um normale Zufallszahlen zu generieren ... es war ein anständiger Ausgangspunkt für die Überprüfung, die ich durchführen muss. (Diese Sätze verteilen sich auf einer "glockenförmigen" Kurve.) Der Startwert wird zufällig festgelegt. Wenn Sie jedoch einen Satz neu generieren möchten, können Sie einfach einen bestimmten Startwert übergeben, und derselbe Satz wird generiert.
Habe Spaß...
Dann können Sie es einfach so verwenden, um den Mittelwert von Sätzen von 1000 Zahlen zu überprüfen, die zwischen einem unteren und einem oberen Grenzwert erzeugt wurden. Die Werte werden in der Klasse gespeichert, damit nach der Instanziierung auf sie zugegriffen werden kann.
_swarmii
quelle
verwenden diese Bibliothek http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart einen guten Zufallsgenerator zur Verfügung gestellt , die ich denke , wird in der sdk aufgenommen werden bald hoffe , es hilft
quelle
Für mich ist der einfachste Weg:
Vielen Dank an @ Adam-Singer Erklärung hier.
quelle
Es hat bei mir funktioniert
new Random().nextInt(100); // MAX = number
es wird 0 bis 99 Zufallszahl geben
Beispiel ::
quelle
Lassen Sie mich diese Frage mit einem praktischen Beispiel in Form einer einfachen Würfelwurf-App lösen, die beim Tippen 1 von 6 Würfelgesichtsbildern zufällig auf den Bildschirm ruft.
Deklarieren Sie zuerst eine Variable, die Zufallszahlen generiert (vergessen Sie nicht, dart.math zu importieren). Deklarieren Sie dann eine Variable, die die anfängliche Zufallszahl innerhalb von Einschränkungen zwischen 1 und 6 als Ganzzahl analysiert.
Beide Variablen sind statisch privat, um einmal initialisiert zu werden. Dies ist keine große Sache, aber es wäre eine gute Praxis, wenn Sie eine ganze Reihe von Zufallszahlen initialisieren müssten.
Erstellen Sie nun als Kind ein Widget zur Gestenerkennung mit einem ClipRRect, um beim Tippen eines der sechs Würfelgesichtsbilder auf den Bildschirm zurückzugeben.
Jedes Mal, wenn Sie auf den Bildschirm tippen, wird eine neue Zufallszahl generiert, auf die verwiesen wird, um auszuwählen, welches Würfelgesichtsbild ausgewählt wird.
Ich habe gehofft, dieses Beispiel hat geholfen :)
Würfel rollende App mit Zufallszahlen im Pfeil
quelle