Randomzahl

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

  • Ich will Dir nicht zu nahe treten, aber viele Deiner Probleme würden sich sehr einfach lösen lassen,
    wenn Du Dir ein paar Minuten Zeit, für die sehr ausführliche Hilfe von GM, nehmen würdest.

    Hier ein Beispiel für Random:

    GML-Quellcode

    1. ​if (0.7 > random(1)) { // Du hast eine 70% Chance auf ein Power-Up
    2. du_hast_die_power = true // Deine Power wurde verdoppelt
    3. }
    4. else {
    5. du_hast_die_power = false // Leider war Dir das Glück nicht hold
    6. }


    Und weil Du es bist, gleich noch eines:

    GML-Quellcode

    1. ​if (random(10) == 7) { // errechnet wird eine Zahl, zwischen 0 und 9(10% Chance)
    2. John_ist_Super = true // John ist ein Glückspilz
    3. }
    4. else {
    5. John_ist_einfach_nur_John = true // John hatte diesmal kein Glück und bleibt normal
    6. }


    Miradur
  • Noch etwas zum erklärung von Miradur.

    Ich würde Variante 1 von den beiden nehmen.
    Besser ist eber noch Variante 2 mit einem "round" vor random. Da random auch Kommazahlen generiert , kann also auch sowas wie 0.25 raus kommen.

    GML-Quellcode

    1. if (round(random(10)) == 7) { // errechnet wird eine Zahl, zwischen 0 und 9(10% Chance)
    2. John_ist_Super = true // John ist ein Glückspilz
    3. }
    4. else {
    5. John_ist_einfach_nur_John = true // John hatte diesmal kein Glück und bleibt normal
    6. }


    Mir ist das selber mal passiert und ich wunderte mich das niemals irgend ein Zustand eingetroffen ist weil man fast nie die 7 trifft beim Zufall.

    Es geht aber aich mit

    GML-Quellcode

    1. if (choose(0,1,2,3,4,5,6,7,8,9,10) = 7) { // errechnet wird eine Zahl, zwischen 0 und 9(10% Chance)
    2. John_ist_Super = true // John ist ein Glückspilz
    3. }
    4. else {
    5. John_ist_einfach_nur_John = true // John hatte diesmal kein Glück und bleibt normal
    6. }
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Jo, manchmal überschätze ich GM einfach ;), ich dachte, wenn es einen Befehl gibt,
    der so wohl mit Ganz- als auch Kommazahlen, arbeiten kann, ist GM auch schlau
    genug, den Unterschied zu erkennen. Tja, falsch gedacht.
    Ergänzend kann ich nur noch dazu sagen, dass es auf den jeweiligen Einzelfall ankommt,
    was man verwenden sollte:

    floor() // rundet IMMER ab
    round() // rundet bis 2,5 immer ab(hier auf 2) und darüber(z.B.: 2,501) immer auf(hier auf 3)

    @x-sascha: Wenn Du die Null mit einbeziehst(bei Deinem choose() Beispiel), dann hat man
    nur noch eine 9,09% Chance :)

    Miradur
  • Habe mir das mal angeschaut und danke für den Tipp mit Round, hab's zwar noch nicht ausprobieren können, aber wenn du sagst, da könnten auch Kommazahlen rauskommen, wird das glaube ich mal stimmen.
    Vielen Dank, x-sascha & Miradur.
  • also:

    GML-Quellcode

    1. ​if (irandom(10)) == 7) { // errechnet wird eine Zahl, zwischen 0 und 9(10% Chance)
    2. John_ist_Super = true // John ist ein Glückspilz
    3. }
    4. else {
    5. John_ist_einfach_nur_John = true // John hatte diesmal kein Glück und bleibt normal
    6. }

    ?
  • Randomzahl [Teil 2: Random-Koordinaten]

    Und wie geht es mit Randomkoordinaten von z. B. x32 bis x128 kann random etwas erscheinen?
    Das wäre momentan mein nächstes größtes Problem. Ich kann's mir ungefähr denken, aber hoffe, dass ihr mir bestätigen könnt, wie es geht.

    Danke
    :) :deal: :deal:


    (Und nebenbei, wie kann man einen Text schreiben, der bei jeder Nachricht unten dabei ist?
    Manche haben das ja.)
  • Tja, welcher Befehl könnte da wohl in Frage kommen, es müßte etwas mit Zufall
    und Reichweite sein, also random und range und weil wir bei Integer bleiben
    wollen(also Ganzzahlen), dann stelle ich mal eine verwegene Vermutung an:

    irandom_range(32, 128)

    Generiert eine zufällige Zahl zwischen 32 und 128(einschließlich der Start- und
    Endzahl, hier also 32 und 128).
    Und nicht vergessen, es werden mit jedem Start, idente Zufallszahlen generiert,
    was für Testzwecke von Vorteil ist, aber in der Endfassung solltest Du randomise()
    verwenden, um die Zufälligkeit selbst zu verändern.

    Miradur
  • Ein Zufallszahlengenerator (also das System, das dir die Zahlen für random() und co ausspuckt) ist nicht wirklich zufällig. Er generiert nur Zahlen in einem sehr zufällig aussehenden Muster - aber trotzdem immer nach der selben Formel. Das bedeutet, wenn du z.B. bei der Zahl 0 anfängst und dann immer wieder random() aufrufst, kommt auch immer die selbe Zahlenfolge raus - beispielsweise (0, 1954, 332316, 41, 9130).
    Damit du also unvorhersehbar zufällige Zahlen rauskriegst, muss die Anfangszahl selbst auch zufällig sein. Und dafür ist die randomize()-Funktion im GM da. Sie nimmt irgendeinen Parameter deines Betriebssystems (z.B. die aktuelle Uhrzeit) und macht daraus den Anfangswert, oder "Seed", für die Zufallszahlen.
    Und damit ist dann die Zahlenfolge, die dir rausgeworfen wird, immer noch nach der selben Formel generiert - aber weil der Anfangspunkt jetzt nicht mehr immer gleich ist, sind die Zahlen jetzt auch bei jedem Spielstart anders.