Ich habe einen Prozentsatz, zum Beispiel 40%
. Id möchte "einen Würfel werfen" und das Ergebnis basiert auf der Wahrscheinlichkeit. (Zum Beispiel gibt es 40%
Chance wird es true
sein).Generate wahr oder falsch boolean mit einer Wahrscheinlichkeit
Antwort
Sie können so etwas wie dies versuchen:
public static bool NextBool(this Random random, double probability = 0.5)
{
if (random == null)
{
throw new ArgumentNullException(nameof(random));
}
return random.NextDouble() <= probability;
}
Seit Random.NextDouble()
kehrt in [0..1)
Bereich (Pseudo-) Zufallswert gleichmäßig verteilt, können Sie
// Simplest, but not thread safe
private static Random random = new Random();
...
double probability = 0.40;
bool result = random.NextDouble() < probability;
Ich wünschte, ich könnte zweimal Upvote, einmal für die richtige Antwort und ein zweites Mal für die Verwendung der richtigen mathematischen Notation für ein Intervall. – EJoshuaS
Super-Nitpick: Ich glaube '<' ist hier passender als '<=', da die Kantenfälle von 'Wahrscheinlichkeit = 0.0' und' Wahrscheinlichkeit = 1.0' in "nie" und "immer" übersetzt werden sollen. Mit '<=' gibt es eine von Null verschiedene Wahrscheinlichkeit, dass 'Ergebnis' wahr ist, wenn 'Wahrscheinlichkeit = 0.0' ist. –
@Mark Dickinson: Dankeschön! Ich stimme Ihrem Gegenbeispiel zu: Normalerweise beinhaltet das Einschließen/Ausschließen von Punkten keine Rolle, da die Wahrscheinlichkeit des * genauen * Wertes * Null * ist. Wir haben jedoch keine * perfekte * gleichmäßige Verteilung mit 'random.NextDouble()' und 'probability = 0.0' ist ein Gegenbeispiel. Ich habe meine Antwort bearbeitet –
versuchen können Sie die eingebaute in Random.NextDouble()
verwenden :
Gibt eine zufällige Gleitkommazahl zurück, die ist größer oder gleich 0,0 und weniger als 1,0
Dann können Sie testen, ob die Zahl größer ist als der Wert Wahrscheinlichkeit:
static Random random = new Random();
public static void Main()
{
// call the method 100 times and print its result...
for(var i = 1; i <= 100; i++)
Console.WriteLine("Test {0}: {1}", i, ForgeItem(0.4));
}
public static bool ForgeItem(double probability)
{
var randomValue = random.NextDouble();
return randomValue <= probability;
}
Nehmen Sie die Random
Instanz gleichen beachten verwendet werden müssen. Here is the Fiddle example.
Einfache Unity Lösung:
bool result = Random.Range(0f, 1f) < probability;
- 1. AngularJS Filter für boolean wahr oder falsch oder alle
- 2. boolean wahr und falsch in conditionals
- 3. Server Antwort setzt Boolean auf wahr/falsch
- 4. Rückgabe Wahr oder falsch innerhalb einer Methode
- 5. sql boolean 0/1 Um wahr oder falsch darzustellen
- 6. AutomaticMigrationsEnabled falsch oder wahr?
- 7. angular2 ngIst wahr oder falsch
- 8. Firebase-Benutzereigenschaft boolescher Wert. (Wahr oder falsch)
- 9. Objective-C WAHR/FALSCH vs wahr/falsch
- 10. Android Bestätigungsdialog Rückkehr wahr oder falsch
- 11. Frühling Faul wahr oder falsch ist, basierend auf einer Eigenschaft
- 12. settyp: Boolean zu String (wahr und falsch konvertieren zu 1)
- 13. Java: Boolean immer wieder wahr
- 14. HTML Wahr oder falsch im Editor?
- 15. .net Referenz spezifische Version wahr oder falsch?
- 16. Verwendung unterstreichen wahr oder falsch zurück mit Findwhere
- 17. Wahr bis widerlegt oder falsch bis bewiesen?
- 18. Array-Wert prüfen? - Wahr oder Falsch (PHP)
- 19. Python Listen anhängen Wahr Boolean
- 20. Wahr oder falsch bei SAS-Musterübereinstimmung zurückgeben
- 21. phpmailer gibt nicht wahr oder falsch
- 22. Sudoku-Code zum Zurückgeben Wahr oder Falsch
- 23. Rails - Entsendung einen Boolean (wahr oder falsch) und die DB in der Steuerung
- 24. Prüfen, ob Boolean wahr ist?
- 25. Wie bekomme ich NSJSONSerialization einen Boolean als wahr oder falsch ausgeben?
- 26. Wahr und falsch in einer Funktion def
- 27. Trainieren Sie ein Textmodell, um wahr oder falsch vorherzusagen
- 28. Boolean immer als wahr zurück?
- 29. boolean Flag ist immer falsch
- 30. Wenn das eine oder andere wahr ist boolean evalution
'Random random = new Random(); ... bool result = random.NextDouble() <= 0,40;' –
ich eine Schmiede-System mit einer Wahrscheinlichkeit haben. Wenn ich klicke, um einen Gegenstand zu schmieden, besteht eine bestimmte Chance, dass der Gegenstand geschmiedet wird oder die Schmiede versagt. Das versuche ich zu tun. –
Es gibt auch einen Stapelaustausch für Spieleentwickler. Viele Unity-Experten dort. Ich dachte nur, ich erwähne es. – stevenvanc