Also ich versuche, ein Skript zu machen, das einen Wert von 4 in 12 verschiedene Variablen zufällig aufteilen wird. Ich kann mir keinen guten Weg vorstellen, dies richtig zu machen. Ich dachte darüber nach Zahlen zu randomisieren, so dass sie nahe an 0,33 (1/12 von 4) sind, aber das würde oft dazu führen, dass die letzten paar Zahlen unterpriorisiert werden. Hat jemand schon mal so etwas probiert oder hat er tolle Ideen, wie man das so zufällig und möglichst ungleichmäßig machen kann?Teilen einer Zahl in zufällige ungleiche Teile
Antwort
Generieren Sie 12 Zufallszahlen von Ihrem bevorzugten Zufallszahlengenerator, rufen Sie sie r1..r12
.
Fügen Sie sie alle hinzu, rufen Sie die Summe sum
.
Ihre erste zufällige Fraktion von 4
ist (r1/sum)*4
. Der Rest sollte offensichtlich sein.
Generieren Sie eine beliebige Zufallszahl größer als 1 und nach der Neuskalierung die erforderliche Summe.
Beispiel:
- geforderte Summe: 4
- Random Numbers: 1 2 3 4 5 6 7 8 9 10 11 12
- Sum = 78
- umskaliert Zahlen:
1 neu skaliert nach (1 * 4)/78
2 umskaliert bis (2 * 4)/78
...
12 umskaliert bis (12 * 4)/78
Der folgende Algorithmus liefert gleichmäßig verteilt Partitionen unter der Annahme, dass es möglich ist, um gleichmäßig verteilte Zufallszahlen über einen kontinuierlichen Bereich zu erzeugen (oder zumindest über einen diskreten Bereich mit ausreichend vielen möglichen Werten, dass die Wahrscheinlichkeit der Duplizierung vernachlässigbar ist).
Um eine Partition von t
in k
Werte zu erzeugen:
generieren
k-1
gleichmäßig verteilte Werte im Bereich[0, t]
.Sortieren Sie sie und fügen Sie
0
am Anfang undt
am Ende hinzu.Verwenden Sie die angrenzenden Unterschiede als Partition.
- 1. Teilen einer Textdatei in zwei verschiedene Teile
- 2. Teilen einer Zeichenfolge in zwei Teile
- 3. effiziente Möglichkeit, ungleiche Partitionen einer ganzen Zahl zu finden
- 4. Array in kleinere Teile teilen
- 5. Python numpy Split-Array in ungleiche Subarrays
- 6. Teilen Array in zwei Teile in Javascript
- 7. SQLAlchemy: zufällige eindeutige ganze Zahl?
- 8. Dividieren eine Zahl in m Teile gleichmäßig zufällig
- 9. Teilen eines Datenrahmens in gleiche Teile
- 10. Teilen eines vollständigen Dateinamens in Teile
- 11. MySQL Blobdaten durch Teilen in Teile
- 12. Teilen Sie eine ungerade Zahl zwischen Threads
- 13. Teilen Sie eine Zahl durch Dezimalpunkt in PHP
- 14. Teilen in einer if-Anweisung
- 15. So teilen Sie 4113.52318N in zwei Teile in php
- 16. Verwendet ungleiche Joins
- 17. Wie ein Twitter Bootstrap-modal in zwei Teile teilen
- 18. Wie kann ich ein Bild in mehrere Teile teilen?
- 19. teilen Sie ein einzelnes Eingabeformular in verschiedene Teile
- 20. Teilen Sie UIImage in zwei Teile entlang eines UIBezierPfad
- 21. Wie importiere ich bestimmte Teile aus mehreren Teilen in MEF?
- 22. Teilen einer Nummer in R
- 23. Responsive Layout ungleiche Höhe
- 24. Beispiel einer zufälligen ganzen Zahl in Rcpp
- 25. So teilen Sie Video oder Audio durch stille Teile
- 26. Teile von Listen zu teilen, um das Kopieren zu vermeiden
- 27. Wie kann ich eine Zeichenfolge in Teile auf einer Zeile teilen und trimmen?
- 28. Zufällige Artikel in Prolog
- 29. Teilen in Montage Schwierigkeiten
- 30. Autofilter für mehrere ungleiche Werte
Das war brilliant! Danke vielmals! – Tom
Beachten Sie, dass diese Lösung keine Mengen von Zahlen generiert, die gleichmäßig auf die logische Weise verteilt sind, aber es ist die Lösung, die die meisten Menschen zu wählen scheinen, weil sie nicht verstehen, warum sie nicht wirklich uniform produzieren. –
@woodchips: Es wäre hilfreich gewesen, eine gewisse Begründung für diese Kritik zu liefern (obwohl es korrekt ist) und noch hilfreicher, eine Antwort zu liefern, die gleichmäßig verteilte Partitionen erzeugt.Ich habe versucht, Letzteres zu tun, obwohl ich mir nicht sicher bin, ob es auch richtig ist. – rici