Zufällige Zahlen in 2 Variablen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich habe die Zahlen {1,2,3,4,5}, die durch einen Command immer zufällig in zwei Servervariablen gespeichert werden sollen. Dabei sollen beide Variablen aber nicht die gleiche Zahl enthalten.
    Habe es bisher nur so hinbekommen, dass die Variablen in manchen Fällen die gleiche Zahl enthalten...

  • Mache es doch einfach so:


    mfg. :thumbup:


    //Edit:verklickt

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • indirekt wenn er es in den cmd reinmacht, dann machst du zugleich auch die deklairung neu
    und das von mir ist das selbe nur kleiner


    Nein, da bei dir durch das goto, die Variablen immer neu deklariert werden und das ist langsamer als meins :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Es zeugt von schlechtem Programmstil mit GOTO zu arbeiten, besser ist eine do while schleife:

    Code
    new rand1, rand2;
    do{
    rand1 = random(6);
    rand2 = random(6);
    }while(rand1==rand2);
    Servervar1 = rand1;
    Servervar2 = rand2;


    und wenn du noch ein Paar Nanosekunden Berechnung einsparen willst machst dus so:

    Code
    new rand1, rand2;
    rand1 = random(6);
    do{
    rand2 = random(6);
    }while(rand1==rand2);
    Servervar1 = rand1;
    Servervar2 = rand2;
  • Es zeugt von schlechtem Programmstil mit GOTO zu arbeiten, besser ist deine do while schleife:


    Also, da gebe ich dir vollkommen recht, goto ist extrem lahm, sogar lahmer als die do-while kombination, aber wenn man es schon richtig machen will, wieso dann nicht direkt mit nur einer while-Schleife ?


    Code
    new rand1, rand2;
    while(rand1 == rand2)
    {
    	rand1 = random(6);
    	rand2 = random(6);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ok,abgesehen von dieser do while sache funktioniert das Random(6) noch nicht richtig. Ich wollte ja Zahlen von 1-5, aber ich glaube, dass Random(6) die Zahl 0 auch als Möglichkeit enthält
    Habe es bisher so:


    new rand1, rand2;
    do{
    rand1 = random(6);
    rand2 = random(6);
    }while(rand1==rand2);
    Servervar1 = rand1;
    Servervar2 = rand2;

  • Ok, ein Problem habe ich doch noch...
    Und zwar hätte ich gerne, dass bei der nächsten Ausführung des Commands die Variablen nicht wieder den vorherigen Wert annehmen können. Also wenn z.B. "Servervar1 = 3" wäre, soll es beim nächsten Durchlauf nicht wieder ein 3 sein können.
    Habe es im Moment noch so:

    Code
    new rand1, rand2;
    do{
    rand1 = random(5)+1
    rand2 = random(5)+1
    }while(rand1==rand2);
    Servervar1 = rand1;
    Servervar2 = rand2;
  • Bei beiden wär schon besser.
    Bsp:
    Servervar1 = 3, Servervar2 = 1
    Im nächsten Durchlauf wären dann die Zahlen {1,3} gesperrt für beide Variablen jeweils.


    Ist das so möglich?


    //Edit: Alle 5 Zahlen müssen nicht aufgerufen werden. Es sollten nur die vorherigen Zahlen fürs nächste mal gesperrt sein

  • //EDIT: Durch dein Edit erklärt sich meine frage, bin gleich fertig.

    Code
    new rand1, rand2,gesperrt[2];
    do{
    rand1 = random(5)+1
    rand2 = random(5)+1
    }while((rand1==rand2) || (rand1==gesperrt[0]) || (rand1==gesperrt[1]) || (rand2==gesperrt[0]) || (rand1==gesperrt[1]));
    gesperrt[0] = rand1;
    gesperrt[1] = rand2;
    Servervar1 = rand1;
    Servervar2 = rand2;


    Wenn es einer besser kann oder Fehler findet darf mich gerne verbessern, ich weis aber nicht ob ich eine Do Whileschleife mit oder Bedingungen verknüpfen darf, musste das noch nie machen aber es spricht nichts dagegen.
    Probieren geht über studieren. :)

    Einmal editiert, zuletzt von carlos1710 ()