Random Funktion (und runden)

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Random Funktion (und runden)

    ----

    Hallo!

    Ich will eine zufällige Zahl zwischen 7 und 7.5 Mia setzen und als Variable speichern. Sie muss natürlich gerundet sein.

    Wieso zeigt mit der Game Maker bei der Zeile

    global.humanity = floor(random(700000000,750000000));

    den Fehler ^wrong number of arguments to funktion or script"? der ganze Script (das dpy ist 'nicht' zu beachten, dpy = death per year)

    Quellcode

    1. global.humanity = round(random(700000000,750000000));
    2. if global.mode = 1
    3. {
    4. global.dpy = floor(random(70000,90000));
    5. }
    6. else if global.mode = 2
    7. {
    8. global.dpy = floor(random(100000,140000));
    9. }
    10. else if global.mode = 3
    11. {
    12. global.dpy = floor(random(150000,160000));
    13. }
    14. else if global.mode = 4
    15. {
    16. global.dpy = floor(random(170000,180000));
    17. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von HDP ()

  • Wenn ich das Spiel starte komm ich zum Menü, da gibts ein Objekt (Button) das heisst Play. Mit einem Linksklick wird der code aufgerufen mit irange_random (nur das als Code) und natürlich dass man in Raum B gelangt, wo die Zahl dann als Text (Draw Text) unten links steht... Und da steht immer die gleiche Zahl! Persistent ist deaktiviert, wobei ich eh denke dass wenn man das Spiel komplett neu starten tut das eh nichts zur Sache macht.
  • Meinst du etwa

    Quellcode

    1. global.humanity = randomize(irandom_range(700000000,750000000));
    ?

    Ich weiss ja nicht, aber ich glaub das kann doch eigentlich gar nicht schwer sein ^^' das funktioniert so nicht...

    EDIT:
    Ausser ich randomize global.humanity und füge sie den 7 mia hinzu, aber dann muss ich wieder überprüfen lassen ob nicht mehr als 7,5 Mia und da dann etwas abziehen... o.Õ

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von HDP ()

  • Die random-Funktionen sind kein echter Zufall sondern nur pseudo-Zufall, der Game Maker Studio benutzt immer den selben Seed für den Anfang (laut Referenz aus Debuggründen) und daher kommen immer die selben Zahlen raus, du kannst den Seed manuell mit random_set_seed setzen oder randomize() benutzen.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Aber wenn ich danach random_set_range(global.humanity) mache kommt irgend eine Zahl ..?
    Und nicht eine zwischen 7 und 7.5 mia...

    Irgendwie bin ich vielleicht zu dumm :s

    EDIT:
    Ok, ich könnte mehrere Variabeln machen und die addieren

    global.humanity = 7mia
    humadd = irandom(0.5 mia)
    global.humanity += humadd

    BISSCHEN umständlicher, aber das sollte klappen...

    edit2
    gehtja auch nicht, da random ja immer die gleiche zahl nimmt... ich glaubs nicht, ich verzweifle an einer einfachen random-zahl ^^' ausserdem erscheint wenn ich eine grössere Variable habe ein .00 nach der Zahl, kann man das irgendwie wegnehmen?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von HDP ()

  • global.humanity = randomize(irandom_range(700000000,750000000));


    So ist das mit randomize() meines Wissens nach nicht gemeint.
    randomize() führt man einzeln aus, so hab ich es zumindest gemacht.
    Außerdem könntest du die Funktionen "min" oder "max" verwenden.
    Sieh mal in der Hilfe nach wie die funktionieren.

    Also so z.B:

    GML-Quellcode

    1. randomize()
    2. global.humanity = min(700000000,round(random(750000000)))
  • Aber wenn ich danach random_set_range(global.humanity) mache kommt irgend eine Zahl ..?
    Und nicht eine zwischen 7 und 7.5 mia...


    Die Funktion gibt es nichtmal. Du musst einmal am Anfang einen Seed setzen (z.B. aktuelle Zeit o.ä.), das macht randomize() schon automatisch für dich, solang du es natürlich aufrufst. Es wäre btw nett, wenn du deine GameMaker Version in den Profil angibst (sowie GML Stand o.ä.), dann können wir dir besser helfen, inbesondere weil die randomize() Sache sich auf GameMaker Studio beziehen.

    Nähere Informationen zu den eingebauten Zufall-Funktionen stehen in deiner mitgelieferten Hilfe.

    NOTE : This function will return the same value every time the game is run afresh due to the fact that GameMaker:Studio generates the same initial random seed every time to make debugging code a far easier task. To avoid this behaviour use randomize or random_set_seed at the start of your game.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • @henrik12345

    OK tut mir leid habe ich aktualisiert ;) Ich habe die Studio Version für 100 Euro aus Steam. Das mit der Hilfedatei schaue ich wirklich nach, aber ich würde hier nicht fragen wenn ich das verstehen würde. Habe aus der Hilfedatei jedoch schon sehr viel lernen können!
    Randomize() gilt also nur einfach für den folgenen Code, so habe ich das verstanden.

    RLP schrieb:



    Also so z.B:

    GML-Quellcode

    1. randomize()
    2. global.humanity = min(700000000,round(random(750000000)))


    Bedeutet das nicht, dass wenn ",round(random(7.5mia))" UNTER den 7Mia ist dass dann DER Wert gewählt wird? Ich will ja mindestens 7 Mia und max 7.5 Mia!
    Aber ich denke ich kann mit all den Befehlen etwas zusammenreimen!

    EDIT:

    Quellcode

    1. global.humanity = 7000000000
    2. humanadd = 0
    3. randomize()
    4. humanadd = irandom(500000000)
    5. global.humanity += humanadd


    Funktioniert, aber ich hab da jetzt 2 Dezimalstellen nach der Zahl! Beispiel 7039475846.00
    Wenn ich eine kleinere Zahl zusammenrechne, und das Ergebnis dann zum Beispiel 750 ist, kommen keine Dezimalstellen.
    Aber ja, wichtig ist ja jetzt dass die Zufallsfunktion .. funktioniert!
    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von HDP ()

  • Bedeutet das nicht, dass wenn ",round(random(7.5mia))" UNTER den 7Mia ist dass dann DER Wert gewählt wird? Ich will ja mindestens 7 Mia und max 7.5 Mia!


    Hoppala, ich hab das tatsächlich mit "max" verwechselt, da hab ich mich wohl vertan.^^
    Ersetze einfach das "min" durch "max" und es sollte funktionieren falls du es mal brauchst.