Minecraft Coder Pack zufällige ofen produkte

...komplette Frage anzeigen

3 Antworten

Random.nextFloat gibt dir einen Wert zwischen 0.0 und 1.0 raus. Du kannst mit den Wahrscheinlichkeiten spielen, in dem du den Wert hinter < veränderst. 0.5 = 50%, 0.7 = 70% und so weiter.

Random rand = new Random(); // irgenwo global ablegen, du darfst das Objekt nicht ständig neu erzeugen, da sonst immer die selben Zufallszahlen fallen

if(rand.nextFloat() < 0.5f)
    return firstProduct;
return secondProduct;

Oder du arbeites mit Seeds, das geht, solange du nicht sehr häufig in der selben Sekunde testen musst(was beim kochen ja nich so häufig vor kommt.)

if(new Random(new Date().getTime()).nextFloat() < 0.5f)
        return firstProduct;
return secondProduct;

Man gibt als seed für den Generator den aktuellen Unix-Timestamp rein, was gewährlistet, dass nicht wie oben beschrieben, die selben Zufallszahlen fallen können.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Nummer378
08.07.2013, 16:31

Den //Kommentar beim Random Objekt muss ich aber mal korrigieren: Nein, es kommen NICHT immer die selben Zufallszahlen heraus, wenn man Random Objekte neu anlegt, da auch Random Objekte mit Seeds arbeiten. Und der Seed wird anhand von System.currentTimeMilis() gesetzt, daher gibt es auch immer andere Zufallszahlen...

1

mach doch einfach einen zufallsgenerator von 0-100

dann mach Modulo 2 und schau ob du einen rest rausbekommst oder nicht (gerade Zahl oder ungerade Zahl)

wenn ja machst du A, wenn nein machst du B

Du kannst natürlich auch zufallsgenerator von 1-2 machen und schauen ob 1 oder 2

www.cs.geneseo.edu/~baldwin/reference/random.html

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von supercrabb
08.07.2013, 22:56

Hatte ich schon, das Problem war nur, dass die Zahl immer beim Start von Minecraft generiert wurde und somit die ganze session die selbe blieb.

Trotzdem danke :)

0

am anfang machst du eine zufällige variable von 0-1
wenn variable < 0,5 dann item sonst kein item

leider kenn ich mich nicht gut mit java aus, in c wär das kein problem ;)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?