php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.09.2004, 12:16  
Gast
 
Beiträge: n/a
Standard [Erledigt] Bestimmte Zahlen in zufälliger Reihenfolge ausgeben

Hallo zusammen,
ich habe Zahlen: 1,2,3,4,5,....,20 und diese müssen bei jedem refresh in einer unterschiedlichen, aber unbedingt zufälligen Reihenfolge erscheinen.

Dieses scriptchen habe ich begonnen. Es gibt immer eine Zahl aus, wie ihr bestimmt sofort seht. Ich bin mir nicht sicher, ob das wirklich richtig zufällig passiert und zweitens würde ich ja gerne alle Zahlen ausgeben, nur in unterschiedlicher Reihenfolge, ohne das eine Zahl doppelt vorkommt.
Kann mir jemand helfen?



<?php
$input = array (1, 2, 3, 4, 5);
$rand_keys = array_rand ($input, 2);


for($i=1; $i<6; $i++){
$randompopunder = $input[$rand_keys[$i]];
echo($randompopunder."
");


}

?>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.09.2004, 12:30  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Das dürfte dir helfen: http://de.php.net/manual/de/function.shuffle.php
__________________
Gruss
L
lazydog ist offline  
Alt 15.09.2004, 12:31  
Erfahrener Benutzer
 
Registriert seit: 10.09.2004
Beiträge: 339
mkl0815
Standard

hallo,

ich würde einen anderen ansatz verfolgen:

nicht den index deines arrays für die ausgabe zufällig bestimmen,
sondern das array "mischen" (wie im kartenspiel) und dann der reihe nach ausgeben.

mit "mischen" meine ich eine funktion, welcher du ein (beliebig langes) array übergibst und die folgendes macht

1. bestimme die länge des arrays
2. bestimme zwei zufallszahlen zwischen 0 und der länge des arrays (-1 weil von 0 an gezählt wird)
3. vertausche den inhalt des arrays an den bei schritt 2 erzeugten indizes
4. führe die schritte 2 und 3 sooft aus, wie das array lang ist

hinweis: damit sich das array auch ausserhalb der funktion ändert muss man es als refenz übergeben (ein & vor dem variablen namen)
Code:
function mischen(&$liste)
{ 
   for($i=0;$i<sizeof($liste);$i++)
   {
       .....
    }
}
bei jedem aufruf mischt du dein array neu und gibst es der reihe nach aus.

mario.
__________________
Problems with Windows : REBOOT
Problems with Linux : BE ROOT
mkl0815 ist offline  
Alt 15.09.2004, 12:52  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

@mkl0815
Man kann das Rad auch neu erfinden (s.o)
__________________
Gruss
L
lazydog ist offline  
Alt 15.09.2004, 13:51  
Erfahrener Benutzer
 
Registriert seit: 10.09.2004
Beiträge: 339
mkl0815
Standard

@lazydog: ich habe diese funktion noch nie benötigt und wusste bis heute nix von ihrer existenz trotz guten 5 jahren php-erfahrung

allerdings gibt es keine aussage darüber, wie oft bei shuffle() die werte vertauscht werden, in einer eigenen funktion kann man das beeinflussen.

mario.
__________________
Problems with Windows : REBOOT
Problems with Linux : BE ROOT
mkl0815 ist offline  
Alt 15.09.2004, 14:03  
Gast
 
Beiträge: n/a
Standard noch etwas kniffliger

Super, das ist fast perfekt für mich (aber siehe unten):

<?php
$numbers = range (1,10);
srand ((float)microtime()*1000000);
shuffle ($numbers);


while (list (, $number) = each ($numbers)) {
if($number==1){ echo"satz1
"; }
if($number==2){ echo"satz2
"; }
if($number==3){ echo"satz3
"; }
if($number==4){ echo"satz4
"; }
if($number==5){ echo"satz5
"; }
if($number==6){ echo"satz6
"; }
if($number==7){ echo"satz7
"; }
if($number=={ echo"satz8
"; }
if($number==9){ echo"satz9
"; }
if($number==10){ echo"satz10
"; }
}
?>


Toll wäre, wenn ich aus den 10 Sätzen nur fünf ausgeben könnte.
Wobei bestimmte Sätze eine Art doppelte oder dreifache chance chance
haben müssten, zu erscheinen. Es ist dann zwar nicht mehr wirklich zufällig (für die bestimmten Sätze zumindest) aber das wäre dann exakt das, was ich haben möchte.

Vielen Dank für die bisherigen Antworten. Ihr seid klasse.
 
Alt 15.09.2004, 14:20  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Welche und wieviele Sätze sollen dann mehrere Chancen haben, wie willst du diese bestimmen. Nur fünf auszugeben ist ja wohl kein Problem
PHP-Code:
$numbers range (1,10);
shuffle ($numbers);

for(
$i 0;$i 5;$i ++) 
{
    echo 
"Satz $numbers[$i]
"
;

Aber der Rest ist etwas difus.
__________________
Gruss
L
lazydog ist offline  
Alt 15.09.2004, 15:37  
Gast
 
Beiträge: n/a
Standard

Gib doch die Auftrittshäufigkeit in Prozent an, bei 4 sätzen ware das "normalerweise"
Satz 1 , Häufigkeit 25 %, Bereich 1-25,
Satz 2 , Häufigkeit 25 %, Bereich 26-50,
Satz 3 , Häufigkeit 25 %, Bereich 51-75,
Satz 4 , Häufigkeit 25 %, Bereich 76-100,

jetzt kannst Du bestimmt Sätze anders gewichten, z.b.

Satz 1 , Häufigkeit 50 %, Bereich 1-50,
Satz 2 , Häufigkeit 20 %, Bereich 51-70,
Satz 3 , Häufigkeit 15 %, Bereich 71-85,
Satz 4 , Häufigkeit 15 %, Bereich 86-100,

Jetzt generierst Du eine Zufallszahl zwischen 1-100 und schaust, in welchem Bereich sie liegt. Gibt es da keine Funktion für, die das einfacher macht ?
 
Alt 15.09.2004, 15:47  
Gast
 
Beiträge: n/a
Standard

Du koenntest auch deine Saetye in einem Array ablegen

$satz[0]="Satz 0";
$satz[1]="Satz x";
:
:
$satz[x]="Satz x";
(wobei x die Anzahl deiner Saetze angibt)

Jetzt waehlst Du eine Zufallszahal zw. 0 und x und speicherst sie in einer Variable (hier: $ran) und gibst den Satz mit

echo "Satz: ".$satz[$ran]."
";

aus. Wenn einige Saetze haeufiger auftauchen sollen, kannst Du sie ja mehrmals im Arraz speichern.
 
Alt 15.09.2004, 16:06  
Gast
 
Beiträge: n/a
Standard

@ Toxo:
Danke für Deinen Beitrag. Es wäre allerdings wichtig, dass keiner der Sätze doppelt vorkommt. Vielleicht habe ich mich auch falsch ausgedrückt. Einige Sätze müssen öfter als erster Satz auftauchen als andere, ohne dann später erneut zu erscheinen.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Textdatei - nur bestimmte Zeilen ausgeben Kristoffer PHP Tipps 2008 7 08.05.2008 16:18
zahlen mit zeilenumbruch nach x-ter zahl ausgeben centauro PHP Tipps 2008 2 09.02.2008 14:22
Bestimmte Elemente eines Objekts zählen tinchen PHP Tipps 2007 7 15.03.2007 20:59
(MySQL) Ergebnisse Zählen und sortiert ausgeben... Hawk Datenbanken 5 04.03.2007 17:08
Bestimmte Anzahl aus DB ausgeben... Datenbanken 5 24.01.2006 14:04
Links zählen und ausgeben sommer PHP Tipps 2007 6 16.11.2005 15:54
[Erledigt] Daten aus MySQL in einer zufälligen Reihenfolge ausgeben PHP-Fortgeschrittene 2 31.07.2005 12:42
Zahlen im Richtigen Format ausgeben unter fpdf! Boennchen PHP Tipps 2005 2 30.05.2005 14:59
Bestimmte Anzahl von Werten ausgeben! Boennchen PHP Tipps 2005 3 10.02.2005 12:53
Bestimmte Anzahl von Werten ausgeben! Boennchen HTML, Usability und Barrierefreiheit 14 09.02.2005 12:24
bestimmte einträge zählen ! PHP Tipps 2005 2 20.01.2005 14:11
Bestimmte Datenbank Felder nur einmal ausgeben Paulo PHP Tipps 2004-2 3 26.11.2004 16:39
Einträge mit gleichem Datum zählen und ausgeben PHP Tipps 2004-2 2 08.11.2004 22:03
Nur bestimmte DB einträge ausgeben PHP Tipps 2004 14 05.08.2004 12:47
daten in umgekehrter reihenfolge ausgeben, ohne order by Datenbanken 3 31.07.2004 18:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array unterschiedliche reihenfolgen ausgeben php, zahlen zufällige reihenfolge, zahlen in zufälliger reihenfolge ausgeben, zahlen in eine zufällige reihenfolge, array zahlen in reihenfolge ausgeben, alle zahlen in unterschiedlicher reihenfolge, 100 zahlen zufällige reihenfolge, zahlenreihe in zufällige reihenfolge, zufälliger satz aus liste php, php alle werte arrays ausgeben zufällige reihenfolge, funktion, welche alle zahlen zwischen 1 und 100 in zufälliger reichenfolge ausgibt., zahlen in zufälliger reihenfolge anzeigen, zahlenfolge in zufälliger reihenfolge ausgeben, zahlen in unterschiedlicher reihenfolge, ziffern 1 7 in zufällige reihenfolge, zahlen bis 1000000 in der reihenfolge, zahlen 1 16 in zufälliger reihenfolge, ziffern in der richtigen reihenfolge ausgegeben, zahlen in zufälliger reihenfolge, zahlen inzufälliger reihenfolge

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.