rand()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • rand()

    Also ich lasse über eine Funktion "zufall" :

    PHP-Code:
    function zufall($min,$max)
    {
    srand((double)microtime()*1000000);
    return (
    rand($min,$max));

    6 Zufallszahlen in ein Array "$zahlen" schreiben :

    PHP-Code:
    $count 0;
    while (
    $count 6)
    {
    $var zufall(1,100);
    if (
    $zahlen[$var] == 0){
       
    $zahlen[$var] = 1;
          
    $count++;
      }

    Nur irgendwie kommen da meistens Zahlen raus, die nur 2-4 Stellen auseinander liegen also etwa 13,15, 18, 50, 52, 55 oder so ... gibt es bei PHP nicht eine funktion, mit der ich die Zahlen etwas "zufälliger" erstellen lassen kann !?!?
    Es gibt keine dummen Fragen .... nur blöde Antworten !

  • #2
    Re: rand()

    du kannst mt_rand() benutzen, das soll 'bessere' zufallszahlen liefern.

    btw: vor der benutzung sollte man mit srand() bzw. mt_srand() eine initialisierung durchführen, da man sonst bei jedem mal die gleichen zufallszahlen bekommt.

    Es gibt keine dummen Fragen .... nur blöde Antworten !
    aber es gibt überflüssige fragen.
    für sowas gibt's das php manual...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      das is schon ok so wie du das machst.
      ich würde evtl. den zweiten teil etwas anders machen. du hast nämlich die zufallszahlen als index für dein array und der wert an der stelle is immer 1.
      PHP-Code:
      while ($count 6)
      {
          
      $var zufall(1,100);
          if (!
      in_array($var,$zahlen))
          {
                 
      $zahlen[] = $var;
                
      $count++;
            }

      was deine zufallszahlen angeht: du kannst das ja beliebig kombinieren mit sinus, cosinus, mit ner zweiten zufallszahl multiplizieren und dann die wurzel ziehen und und und
      PHP-Code:
      function zufall($min,$max)
      {
          
      srand((double)microtime()*1000000);
          do
              
      $erg=ceil(pow(cos(rand(rand($min,$max),rand($min,$max))),7)*rand(rand($min,$max),rand($min,$max)));
          while (
      $erg<$min or $erg>$max);
          return 
      $erg;

      aber inwieweit die zahlen dadurch zufälliger werden? ka

      mt_rand wär auch ne lösung
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Die von wahsaga genannte mt_rand() / mt_srand() sind durchaus besser ... aber so:
        PHP-Code:
        function zufall($min,$max) {
        srand((double)microtime()*1000000);
        return (
        rand($min,$max));

        Solltest Du's auf keinen Fall machen. Die srand() / mt_srand() Funktion wird maximal 1 mal während des Scriptablaufs gesetzt ... nicht öfter ... und auf gar keinen Fall jedes mal !!!!!!

        Im übrigen sollte man den Hinweis:
        Note: Since PHP 4.2.0 it's no longer necessary to seed the random number generator before using it.
        beachten ... denn der steht sowohl bei srand() als auch bei mt_srand()!
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar

        Lädt...
        X