kostenloser Webspace werbefrei: lima-city


Zufallszahlen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Halo, ich w?rde gerne Zufallszahlen mit php ermitteln
    Also, ich meine das so:

    Er soll sich eine Zahl aussuchen:
    Zur auswahl stehen 1 5 16 45 49 20 4 6 und 9
    Wenn er sich nun die Zahl 16 ausgesucht hat,
    dann soll in einer anderen Variable noch eine der ?brigen Zahlen per Zufall ermittelt werden.

    Ich hoffe das war verst?ndlich
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Versuch es mal damit(korrigierte, weniger voreilige Version):

    //Oh da war ich wohl ?bereilt:
    //In Deinem Fall w?rde ich raten, die Zahlen in ein //Array $allezahlen zu speichern,

    $allezahlen[]="1";
    $allezahlen[]="5";
    // usw., bis alle erlaubten Zahlen drin sind

    // dann die Zufallsfunktion
    mt_srand((double)microtime()*1000000);
    $zufall=mt_rand('0',count($allezahlen) - 1);

    //Variable Zufall als Index verwenden:
    // so wird die soundsovielte
    //im Array gespeicherte Zahl ausgegeben
    echo $allezahlen[$zufall];

    Die zweite Zahl suchst du genauso aus, ver?nderst aber die Variabel zufall in zufall2, machst aber noch eine Schleife rein, die ?berpr?ft, ob du nicht zweimal dieselbe Zahl ausgew?hlt hast, in diesem Fall wiederholst du einfahch dei Ausfall f?r zufall2 solange, bis zufall 2 ungleich zufall1 ist! ...



    Beitrag ge?ndert am 12.04.2006 16:56 von btiwienie
  4. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Kannst du mir dann vieleicht moch diese Schleife reinbauen, von Schleifen habe ich keum ahnung.

    Beitrag ge?ndert am 12.04.2006 16:57 von speedtouch92

  5. Ich will aber nicht jede Zahlt zwischen 1 und 28 haben.

    Habe ich schon korrigiert, und au?erdem neben den Button geklickt und eine irrt?mliche Spam-Meldung abgeschickt- tut mir leid

  6. Kannst du mir dann vieleicht moch diese Schleife reinbauen, von Schleifen habe ich keum ahnung.

    Beitrag ge?ndert am 12.04.2006 16:57 von speedtouch92

    Mensch, ein bisschen programmieren solltest du aber k?nnen ...
    Weil du es bist ...


    while($zufall != $zufall2)
    {
    mt_srand((double)microtime()*1000000);
    $zufall2=mt_rand('0',count($allezahlen) - 1);
    }
    echo $zufall2;
  7. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Also, ich glaube da ist ein Fehler drin.
    Mein Code sieht so aus:

    $allezahlen[]="9";
    $allezahlen[]="10";
    $allezahlen[]="11";
    $allezahlen[]="12";
    $allezahlen[]="13";
    $allezahlen[]="8";
    $allezahlen[]="14";
    $allezahlen[]="15";
    $allezahlen[]="24";
    $allezahlen[]="25";
    $allezahlen[]="26";
    $allezahlen[]="27";
    $allezahlen[]="28";
    $allezahlen[]="29";
    $allezahlen[]="30";
    $allezahlen[]="31";
    $allezahlen[]="40";
    $allezahlen[]="41";
    $allezahlen[]="42";
    $allezahlen[]="43";
    $allezahlen[]="44";
    $allezahlen[]="45";
    $allezahlen[]="46";
    $allezahlen[]="47";
    $allezahlen[]="56";
    $allezahlen[]="57";
    $allezahlen[]="58";
    $allezahlen[]="59";
    $allezahlen[]="60";
    $allezahlen[]="13";
    
    // usw., bis alle erlaubten Zahlen drin sind
    
    // dann die Zufallsfunktion
    mt_srand((double)microtime()*1000000);
    $zufall=mt_rand('0',count($allezahlen) - 1);
    
    //Variable Zufall als Index verwenden:
    // so wird die soundsovielte
    //im Array gespeicherte Zahl ausgegeben
    
    while($zufall != $zufall2)
    {
    mt_srand((double)microtime()*1000000);
    $zufall2=mt_rand('0',count($allezahlen) - 1);
    }
    echo $zufall;
    echo "<br>";
    echo $zufall2;


    Das Problem ist aber:
    1) ich muss das Zufallsprinzip so oft durchf?hren, bis alle Zahlen verwendet wurden.
    2) $zufall und $zufall2 sind immer gleich (Das soll je eigentlich nicht sein)
    3)$zufall ist manchmal auch 0, das will ich aber auch nicht.

    Zu bewundern unter:
    http://speedtouch92.sp.funpic.de/test.php

    Beitrag ge?ndert am 12.04.2006 19:10 von speedtouch92
  8. Ich hab mal ausm Tut
    (http://www.gfx-world.net/index.php?page=tutorials/view_tut&setpos=Tutorials&id=101)
    des drau? gemacht:

    $z=array();
    
    $c=0;
    while ($c<1)
    {
    mt_srand((double)microtime()*1000000);
    $rnd=mt_rand(1,50);
    if (!isset($z[$rnd])) { $z[$rnd]=1; $c++; }
    }
    
    $c=0;
    for ($i=1; $i<51; $i++)
    {
    if (isset($z[$i])) { echo "$i - "; $c++;}
    if ($c==6) { echo $c++;}
    }
    
    
    $c=0;
    while ($c<1)
    {
    mt_srand((double)microtime()*1000000);
    $rnd=mt_rand(1,50);
    if (!isset($z[$rnd])) { echo $rnd; $c++; }
    }


    zu bestaunen unter http://1.0px.de/lima/zufall.php

    es gibt nie zwei zahlen gleichzeitig aus und beinhaltet keine 0

    hoffentlich ist es das was man auch ben?tigt

    Beitrag ge?ndert am 12.04.2006 20:22 von regeniter
  9. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Ich wei? nicht, wird da auch nur zwischen diesen Zahlen eine Zufallszahl ausgew?hlt?

    9 10 11 12 13 8 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 13

    Und wird keine Zahl zwei mal ausgegeben?
    Und, wie kann ich das auf 30 Abfragen erweitern, sodass keine Zahl keiner vorher gezogenen gleicht?
  10. // array f?llen:
    // Reihenfolge ist egal
    $array = array(
    1,
    2,
    3,
    ...
    );

    // Zahlen im Array "durcheinanderw?rfeln"
    shuffle($array);

    // Anzahl der zu ziehenden Zahlen
    $max = 30;

    if($max > count($array) )
    print('Fehler: Es k?nnen nicht mehr Zahlen gezogen werden, als vorhanden sind!<br />');

    // array_shift holt das erste Element eines Arrays
    // und entfernt es aus dem Array
    // so kann kein Element mehrfach gezogen werden

    for($i = 0; $i < $max; $i++) {
    $auswahl = array_shift($array);
    printf('%s. gezogene Zahl: %s<br />', $i, $auswahl);
    }


    http://de.php.net/manual/de/function.shuffle.php
    http://de.php.net/manual/de/function.array-shift.php

  11. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.


    // array f?llen:
    // Reihenfolge ist egal
    $array = array(
    1,
    2,
    3,
    ...
    );

    // Zahlen im Array "durcheinanderw?rfeln"
    shuffle($array);

    // Anzahl der zu ziehenden Zahlen
    $max = 30;

    if($max > count($array) )
    print('Fehler: Es k?nnen nicht mehr Zahlen gezogen werden, als vorhanden sind!<br />');

    // array_shift holt das erste Element eines Arrays
    // und entfernt es aus dem Array
    // so kann kein Element mehrfach gezogen werden

    for($i = 0; $i < $max; $i++) {
    $auswahl = array_shift($array);
    printf('%s. gezogene Zahl: %s<br />', $i, $auswahl);
    }


    http://de.php.net/manual/de/function.shuffle.php
    http://de.php.net/manual/de/function.array-shift.php




    Hei?t dass, dass er %s durch die Zahl ersetzt?
    Wenn ja, wie kann ich dass dann in eine tabelle eintragen alssen, wenn die tabelle so aussehen soll:
    <table border="2">
    <tr><td>Zahl 1</td><td>Zahl 2</td><td>Zahl 3</td><td>Zahl 4</td><td>Zahl 5</td><td>Zahl 6</td></tr>
    <tr><td>Zahl 7</td><td>Zahl 8</td><td>Zahl 9</td><td>Zahl 10</td><td>Zahl 11</td><td>Zahl 12</td></tr>
    <tr><td>Zahl 13</td><td>Zahl 14</td><td>Zahl 15</td><td>Zahl 16</td><td>Zahl 17</td><td>Zahl 18</td></tr>
    <tr><td>Zahl 19</td><td>Zahl 20</td><td>Zahl 21</td><td>Zahl 22</td><td>Zahl 23</td><td>Zahl 24</td></tr>
    <tr><td>Zahl 25</td><td>Zahl 26</td><td>Zahl 27</td><td>Zahl 28</td><td>Zahl 29</td><td>Zahl 30</td></tr>
    </table>


    Es tut mir leid, wenn ich mich dumm stelle :frown:

    Beitrag ge?ndert am 12.04.2006 23:16 von speedtouch92
  12. hm...vllt solltest du die schleife wie folgt ?ndern?!

    [php]while($zufall == $zufall2)
    {
    mt_srand((double)microtime()*1000000);
    $zufall2=mt_rand('0',count($allezahlen) - 1);
    }
    echo $zufall2;
    [/php]

    denn die schleife soll ja solange durchlaufen werden, wie $zufall1 gleich $zufall 2 is, damit zwei verschiedene zahlen rauskommen...

    und den array kannst du glaub ich auch anders gestalten, is vllt am ende n bissl ?bersichtlicher...

    [php]
    $zahlen1 = array(1,3,4,5,67,88,64,3,6,36,6);
    [/php]

    mfg
  13. So, jetzt habe ich mich doch herausgefordert gesehen:
    1. Die Variante von Alopex ist nat?rlich die praktischste, habe ich aber an der einen oder anderen Stelle verbessert
    2. Die Variante mit der while -Schleife geht aber auch, wenn man's richtig anstellt.
    Beides im Quelltext hier:

    <?php
    //Unter Verwendung der Beitr?ge in
    //http://www.lima-city.de/boards.php?m=thread&id=48166&page=0#447819
    //Besonderer Dank an alopex


    // ######## 1. Variante ###############
    echo "<br>"."Zwei Zufallszahlen berechnen:"."<br>";

    //DAs Array mit den richtigen Zahlen f?llen, hier ein Beispiel
    $array = array(1,2,3,17, 19,23,24,27,49);

    //W?rfelt die Reihenfolge nach Zufall durcheinander
    shuffle($array);

    // Anzahl der zu ziehenden Zahlen festlegen, hier z,. B. 2
    $max = 2;
    //Sicherheitshalber: Falls das Array zu klein ist, um die Zahlenmenge zu ziehen:
    //Warnmeldung ausgeben!
    if($max > count($array) ){
    print('Fehler: Es k?nnen nicht mehr Zahlen gezogen werden, als vorhanden sind!<br />');
    }

    // array_shift holt das erste Element eines Arrays
    // und entfernt es aus dem Array
    // so kann kein Element mehrfach gezogen werden

    //Ausgangspunkt des Z?hlers ist 1, anders als bei alopex!
    //um die nat?rliche Z?hlung bei der Ausgabe zu gew?hrleisten
    for($i = 1; $i <= $max; $i++) {
    $auswahl = array_shift($array);
    printf('%s. gezogene Zahl: %s<br />', $i, $auswahl);
    }



    // ######## 2. Variante ###############

    //Achtung alle Variabeln-Namen sind durch "neu"-Zusatz ge?ndert, sonst gibt's durcheinander

    echo "<br>"."Zwei Zufallszahlen berechnen, eine Variante:"."<br>";
    //Das Array mit den richtigen Zahlen f?llen, hier ein Beispiel
    $allezahlenneu = array(1,2,3,17,19,23,24,27,49);
    // dann die Zufallsfunktion
    mt_srand((double)microtime()*1000000);
    $neuerzufall=mt_rand('0',count($allezahlenneu) - 1);

    //Variable Zufall als Index verwenden:
    // so wird die soundsovielte im Array gespeicherte Zahl ausgegeben
    echo "<br>"."Die erste gezogene Zahl hei&szlig;t $allezahlenneu[$neuerzufall]"."<br>";

    //Zur Ermittlung der zweiten Zufallszahl soll sichergestellt werden,
    //dass diese nicht identisch mit der ersten ist.
    //Daher wird die Zahl zun?chst gleichgesetzt und dann neu errechnet,
    // bis eine andere Zahl per Zufall herauskommt!
    $neuerzufall2=$neuerzufall;
    $i="0";
    while($neuerzufall == $neuerzufall2)
    {
    mt_srand((double)microtime()*1000000);
    $neuerzufall2 = mt_rand('0',count($allezahlenneu) - 1);
    }
    echo "<br>"."Die zweite gezogene Zahl hei&szlig;t $allezahlenneu[$neuerzufall2]";
    ?>
    Such Dir eine Variatne aus und dann
    viel Spa? damit speedtouch92 !! :biggrin:
  14. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    <table border="2">
    <tr><td>Zahl 1</td><td>Zahl 2</td><td>Zahl 3</td><td>Zahl 4</td><td>Zahl 5</td><td>Zahl 6</td></tr>
    <tr><td>Zahl 7</td><td>Zahl 8</td><td>Zahl 9</td><td>Zahl 10</td><td>Zahl 11</td><td>Zahl 12</td></tr>
    <tr><td>Zahl 13</td><td>Zahl 14</td><td>Zahl 15</td><td>Zahl 16</td><td>Zahl 17</td><td>Zahl 18</td></tr>
    <tr><td>Zahl 19</td><td>Zahl 20</td><td>Zahl 21</td><td>Zahl 22</td><td>Zahl 23</td><td>Zahl 24</td></tr>
    <tr><td>Zahl 25</td><td>Zahl 26</td><td>Zahl 27</td><td>Zahl 28</td><td>Zahl 29</td><td>Zahl 30</td></tr>
    </table>

    Ich habe mich f?r die erste Version entschieden.
    Wie muss ich den Inhalt der schleife ?ndern, sodass der Code oben entsteht?
  15. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Hi, ich habe gerade gemerkt, dass die folgende ausgabe erfolgt:

    1. gezogene Zahl: 25
    2. gezogene Zahl: 30
    3. gezogene Zahl: 14
    4. gezogene Zahl: 13
    5. gezogene Zahl: 31
    6. gezogene Zahl: 32
    7. gezogene Zahl: 46
    8. gezogene Zahl: 60
    9. gezogene Zahl: 10
    10. gezogene Zahl: 26
    11. gezogene Zahl: 9
    ...
    ...
    ...


    Die Zahlen werden so ausgegeben:
    for($i = 1; $i <= $max; $i++) {
    $auswahl = array_shift($array);
    printf('%s. gezogene Zahl: %s<br />', $i, $auswahl);
    }

    Wenn ich nun das erste %s weglasse, weil ich das 1. gezogene Zahl nicht haben will, dann zeigt er statt den Zufallszahlen nur die zahlen von 1 bis 11 an.
    Wie kann ich das ?ndern?

    Beitrag ge?ndert am 17.04.2006 19:12 von speedtouch92
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!