Dies ist eher eine Zusammenfassung "Wie würde ich an diese Frage herangehen?" Als ich mit Codierung zu kämpfen habe. Ich möchte einen Charaktererstellungsbildschirm machen, in dem du 0 Punkte hast, aber du kannst von einer Statistik nehmen und sie in eine andere setzen. Wie würden Sie unter diesem System Statistiken statistisch verteilen? Ich habe Basisstatistiken und die maximale Abweichung, aber ich weiß nicht, wie ich die statistischen Werte randomisieren soll, um spezialisierte Charaktere zu erstellen. Sie werden nicht alle 150% in einem und 75% in den anderen zwei Statistiken sein, aber ich denke, eine sanfte Spezialisierung, wahrscheinlich mit irgendeiner Form von gewichtetem Randomizer, wäre nett. Fühlen Sie sich frei, mit Pseudo-Code oder nur eine Erklärung zu beantworten, wie Sie es tun würden. : DF: Randomisierte Zeichenerstellung mit einem Punktesystem
0
A
Antwort
0
Hier ist meine Lösung in Python:
import random
from operator import add, sub
baseStats = {
"baseHealth":10.00,
"baseSpeed":10.00,
"baseAccuracy":10.00,
}
baseDeviation = 3
ops = (add, sub)
charStats = {}
#Make spread. Eg: If the deviation is 3 It'll be [0, 0, 0, 0, 1, 1, 1, 2, 2, 3]
#With the highest deviations being the rarest
spread = []
for i in range(1,baseDeviation+2):
for j in range(1,baseDeviation+2-i):
spread.append(i)
print(spread)
#Make a list of stats without the base values.
remainingStats = []
for key, value in baseStats.items():
charStats[key] = value
remainingStats.append(key)
#Choose a stat and add or subract a random choice from our weighted spread
op = random.choice(ops)
chosenOne = random.choice(remainingStats)
remainingStats.remove(chosenOne)
chosenNumber = random.choice(spread)
charStats[chosenOne] = op(charStats[chosenOne],chosenNumber)
spread.remove(chosenNumber)
#Work out the difference between the randomised stat and the standard then give
#it to one and leave the other be.
difference = baseStats[chosenOne] - charStats[chosenOne]
charStats[random.choice(remainingStats)] = charStats[random.choice(remainingStats)] + difference
print(charStats)
Verwandte Themen
- 1. Punktesystem nach Bezahlen mit Paypal hinzufügen
- 2. Elixir - Randomisierte Zahlen in Agenten
- 3. randomisierte elementweise Multiplikation in R
- 4. randomisierte Schnellsortierung [stürzt bei einigen Eingaben ab]
- 5. Verwenden des F # -Rohrsymbols mit einem Objektkonstruktor
- 6. F # - Zuordnung einer Liste mit einem Akkumulator
- 7. F #: Abmeldung von einem FSharp.Control.Reactive.Observable
- 8. Randomisierte SVD für LSA \ LSI auf Windows-Umgebung
- 9. Mit WriteLineAsync in F #
- 10. Machen Sie randomisierte Sprites in einer bestimmten Koordinate etwas tun
- 11. F #: Zitat mit Typdefinition?
- 12. Einsteins Rätsellösung mit F #
- 13. F # Funktion mit Parametereinschränkungen
- 14. Impliziter Programmierstil mit F #
- 15. Autofac mit F #
- 16. Randomisierte geschichtete k-fache Kreuzvalidierung in scikit-learn?
- 17. F # Endlosschleifen in F #
- 18. Erstellen einer Klasse mit einem privaten Konstruktor in F #
- 19. Mit f() und ifelse in einem for-Schleife
- 20. zu tail -f der neuesten Protokolldatei mit einem bestimmten Muster
- 21. Finden -type f mit Einschränkungen
- 22. F-Test mit plm-Modell
- 23. Wie Einheit aus einem Ausdruck in f #
- 24. Django Zeitdifferenz mit F Objekt
- 25. AngularJS ng-wenn Probleme mit 'f' und 'F'
- 26. Deserialisieren zu einem F # -Typ mit json.net und einer JSON-Eigenschaft mit einem @ -Symbol
- 27. Mit einem "Bitte wählen" f: selectItem mit null/leer Wert in einem p: selectOneMenu
- 28. Was ist die einfachste Art, Arrays abwechselnd zu sortieren (zB: T, T, F, F, F, T, F, T, F, F, F bis T, F, T, F, T, F, T, F, T, T, T)?
- 29. F # und ADO.NET - idiomatische F #
- 30. Wie F [A \/B] in (F [A], F [B])