2016-12-13 3 views
0

Ich bin derzeit versucht, ein Pokemon Spiel in Python zu machen, aber wenn Sie versuchen, Pokemon zu fangen, teilen diese legendären Pokemons pflegt die gleiche Rate wie normale Pokemons erscheinen. Deshalb möchte ich den Prozentsatz Zufälligkeit in die Python importieren, falls Sie nicht verstehen, ist es das, was ich geschehen annehmen:Randomly Ausgang A Nummer auf dem Prozentsatz basierend gegeben

Magikrap 10%

Greninja 1%

Lapras 1%

Psyduck 15%

und ich möchte, dass die Python 10 Magikraps zu erzeugen, wenn ich es zufällig benötigen 100 Pokemons erzeugen

Ich frage mich, ob ich zufällig aus Python importiere oder was soll ich tun? Danke

+0

Sicher, das klingt gut. Erstellen Sie eine Liste dieser Pokémon-Objekte, und Sie können die zufällige Methode verwenden, um Elemente aus der Liste nach dem Zufallsprinzip auszuwählen – davedwards

Antwort

0
from random import randint as r 
ran = r(1,100) 
if ran == "1": 
    poke = "Lapras" 
elif ran == "2": 
    poke = ... 
so on and so on... 
print "You found",poke,"!" 
1

Sie Random.uniform verwenden können. Dann erstellen Sie eine Datenbank mit dem Pokemon und ihrer Fangrate. Sie können dies sogar je nach Bereich trennen, wenn Sie möchten.

Etwas wie:

import random 

random.uniform(0,100) 

was in meinem Fall war 45,0757219

So könnte man eine Liste erstellen, die wie folgt aussieht. (Kein tatsächlicher Code)

Magikrap 0,10.4 

Greninja 10.4,11 

Lapras 11,11.3 

Psyduck 11.3,15 

Und dann, egal in welcher Entfernung die Nummer landet, der Spieler bekommt das Pokemon, das mit diesem Bereich verbunden ist.

Ich hoffe, es macht Sinn.

0

Sie können ein Wörterbuch von Pokemon und ihre Fangraten wie machen: `catch_rate = { "Magikarp": 10}‘. Sie würden natürlich mehr Pokemon hinzufügen. Dann könnten Sie verwenden:

import random 
if random.randint(1, 100) < catch_rate[pokemon]: 
    print "You caught a " + pokemon + "!" 

Diese prüft, ob der Zufall niedrig genug ist, weniger zu sein als die Fangrate, und wenn es ist, ist es ein Erfolg. Sie müssten pokemon einen Wert zuweisen, damit dieser Code funktioniert.

0

Überprüfen Sie die random Bibliothek. Nachdem Sie Ihren Zufallsgenerator erstellt haben, gibt es mehrere Möglichkeiten, um zu erhalten, was Sie wollen.

In jedem Fall ist es ein bisschen komplizierter als das, was Tyler C ist darauf hindeutet, (glaube ich), weil Ihre Bereiche werden wahrscheinlich nicht genau auf 100% addieren. Was schlägt er vor, ist eine Veränderung auf weighted choice, die anders ist. Wenn du willst, kann ich das weiter ausbauen.

Um Prozent s Sie brauchen etwas anderes, und ich bin mir nicht sicher, dass Sie Frage ist klar definiert. Wenn ein Pokémon als x% in einer Auswahl von 1 (nicht 100) erscheint, ist das einfacher. Wenn du nur ein Pokémon erstellen kannst, musst du entscheiden, ob du meinst:

1) Die Chance, dass ein Pokémon ausgewählt wird, beträgt 15%. Das beschränkt dich sehr. Du kannst nicht 6 (verschiedene) Pokémon dieser Wahrscheinlichkeit haben. Grundsätzlich , wenn die Menge an Prozent zu mehr als 100 summieren, ist es unmöglich.Wenn alle von der prozentuale Anteil der von allen Pokémon summieren sich auf weniger als 1 (einschließlich der Prozent nichts fallen, wenn nötig), als die Implementierung einfach ist:

def genPok(amount): 
    for _ in range(amount): 
     x = random.randint(1,100) 
     if x >= 1 and x <= 3: yield <some 3% pokemon> 
     if x==4; yield <some other 1% pokemon> 

und so weiter.

2) Andernfalls müssen Sie jede Auswahl berücksichtigen. Wenn Sie 300 Pokémon haben, hat mindestens eine von ihnen die Chance, nicht mehr als 1/300 zu wählen. Dies bringt Sie zurück zu einer gewichteten Auswahl, mit der ich verbunden bin.

Verwandte Themen