gleiche Zufallszahlen verhindern
Roger
- php
hallo allerseits!
ich versuche mit
function zufall($zeilen)
{
global $var;
mt_srand((double)microtime()*1000000);
$var = array();
for ($i=0;$i<3;$i++)
{
array_push($var, mt_rand(0,$zeilen));
}
}
in den array $var 3 zufällig generierte zahlen zwischen 0 und $zeilen zu schreiben.
jetzt habe ich allerdings bemerkt, dass es auch mal vorkommen kann das diese zufällig generierten zahlen nun auch mal doppelt (oder häufiger) vorkommen können.
wie kann ich das umgehen?
danke für eure hilfe!
Hi
ich versuche mit
function zufall($zeilen)
{
global $var;
mt_srand((double)microtime()*1000000);
$var = array();
for ($i=0;$i<3;$i++)
{
array_push($var, mt_rand(0,$zeilen));
}
}
in den array $var 3 zufällig generierte zahlen zwischen 0 und $zeilen zu schreiben.
jetzt habe ich allerdings bemerkt, dass es auch mal vorkommen kann das diese zufällig generierten zahlen nun auch mal doppelt (oder häufiger) vorkommen können.
wie kann ich das umgehen?
Indem Du prüfst, ob Deine n. Zufallszahl (n > 1) bereits vorher einmal gezogen wurde (durch Vergleich mit der 1., 2. ... (n-1). Zufallszahl). Falls schon vorhanden, neue Zufallszahl holen...
Bei sehr kleiner Anzahl der möglichen Werte:
Mögliche Werte in Liste, Zufallsindex holen, die Zahl aus der Liste streichen...
Andreas
Hi!
Ich würde alle generierten Zufallszahlen in einen Array schreiben und dann immer mit in_array() prüfen ob schon vorhanden!
Grüße
Andreas
Hallo,
ich habe mal so ein Skript geschrieben. Vielleicht kannst Du damit was anfangen ...
Grüße,
Sebastian
<?php
/* **********************************************************************
Filename: randompics.inc
Description: generate random pics
Author: © 2002 Sebastian Becker (sebastian.becker@berlin.de)
********************************************************************** */
// configuration
$rp_default_txt = "Berliner Impressionen"; // default description text
$rp_default_w = "150"; // default width
$rp_default_h = "150"; // default height
$rp_pic_num = 3; // number of images to show
// set image path
if($page=="guestbook"){$rp_pic_path="../img/";}else{$rp_pic_path="img/";}
// spacer image
$rp_spacer = "<img src="".$rp_pic_path."onepixel.gif" width="".$rp_default_w."" height="1" alt="">";
// picture parameters
$rp_pic[0] = 'pic01.jpg';
$rp_pic_w[0] = '';
$rp_pic_h[0] = '';
$rp_pic_txt[0] = 'Brandenburger Tor';
$rp_pic[1] = 'pic02.jpg';
$rp_pic_w[1] = '';
$rp_pic_h[1] = '';
$rp_pic_txt[1] = 'Potsdamer Platz';
$rp_pic[2] = 'pic03.jpg';
$rp_pic_w[2] = '';
$rp_pic_h[2] = '';
$rp_pic_txt[2] = 'Brandenburger Tor';
$rp_pic[3] = 'pic04.jpg';
$rp_pic_w[3] = '';
$rp_pic_h[3] = '';
$rp_pic_txt[3] = 'Bundeskanzleramt';
$rp_pic[4] = 'pic05.jpg';
$rp_pic_w[4] = '';
$rp_pic_h[4] = '';
$rp_pic_txt[4] = 'Lichtsäulen am Potsdamer Platz';
$rp_pic[5] = 'pic06.jpg';
$rp_pic_w[5] = '';
$rp_pic_h[5] = '';
$rp_pic_txt[5] = 'Sony Potsdamer Platz (Detail)';
$rp_pic[6] = 'pic07.jpg';
$rp_pic_w[6] = '';
$rp_pic_h[6] = '';
$rp_pic_txt[6] = 'Skulptur am Checkpoint Charlie';
$rp_pic[7] = 'pic08.jpg';
$rp_pic_w[7] = '';
$rp_pic_h[7] = '';
$rp_pic_txt[7] = 'Hamburger Bahnhof';
$rp_pic[8] = 'pic09.jpg';
$rp_pic_w[8] = '';
$rp_pic_h[8] = '';
$rp_pic_txt[8] = 'Funkturm';
$rp_pic[9] = 'pic10.jpg';
$rp_pic_w[9] = '';
$rp_pic_h[9] = '';
$rp_pic_txt[9] = 'Brandenburger Tor & Reichstag';
$rp_pic[10] = 'pic11.jpg';
$rp_pic_w[10] = '';
$rp_pic_h[10] = '';
$rp_pic_txt[10] = 'Fernsehturm';
$rp_pic[11] = 'pic12.jpg';
$rp_pic_w[11] = '';
$rp_pic_h[11] = '';
$rp_pic_txt[11] = 'Kurfürstendamm';
$rp_pic[12] = 'pic13.jpg';
$rp_pic_w[12] = '';
$rp_pic_h[12] = '';
$rp_pic_txt[12] = 'Gedächtniskirche';
$rp_pic[13] = 'pic14.jpg';
$rp_pic_w[13] = '';
$rp_pic_h[13] = '';
$rp_pic_txt[13] = 'Hackesche Höfe';
$rp_pic[14] = 'pic15.jpg';
$rp_pic_w[14] = '';
$rp_pic_h[14] = '';
$rp_pic_txt[14] = 'Hochhäuser am Potsdamer Platz';
$rp_pic[15] = 'pic16.jpg';
$rp_pic_w[15] = '';
$rp_pic_h[15] = '';
$rp_pic_txt[15] = 'Schloss Charlottenburg';
$rp_pic[16] = 'pic17.jpg';
$rp_pic_w[16] = '';
$rp_pic_h[16] = '';
$rp_pic_txt[16] = 'Goldelse auf der Siegessäule';
$rp_pic[17] = 'pic18.jpg';
$rp_pic_w[17] = '';
$rp_pic_h[17] = '';
$rp_pic_txt[17] = 'Sony Potsdamer Platz (Dach)';
$rp_pic[18] = 'pic19.jpg';
$rp_pic_w[18] = '';
$rp_pic_h[18] = '';
$rp_pic_txt[18] = 'Synagoge an der Oranienburger Straße';
/*
$rp_pic[19] = 'pic20.jpg';
$rp_pic_w[19] = '';
$rp_pic_h[19] = '';
$rp_pic_txt[19] = '';
$rp_pic[20] = 'pic21.jpg';
$rp_pic_w[20] = '';
$rp_pic_h[20] = '';
$rp_pic_txt[20] = '';
$rp_pic[21] = 'pic22.jpg';
$rp_pic_w[21] = '';
$rp_pic_h[21] = '';
$rp_pic_txt[21] = '';
$rp_pic[22] = 'pic23.jpg';
$rp_pic_w[22] = '';
$rp_pic_h[22] = '';
$rp_pic_txt[22] = '';
$rp_pic[23] = 'pic24.jpg';
$rp_pic_w[23] = '';
$rp_pic_h[23] = '';
$rp_pic_txt[23] = '';
$rp_pic[24] = 'pic25.jpg';
$rp_pic_w[24] = '';
$rp_pic_h[24] = '';
$rp_pic_txt[24] = '';
$rp_pic[25] = 'pic26.jpg';
$rp_pic_w[25] = '';
$rp_pic_h[25] = '';
$rp_pic_txt[25] = '';
$rp_pic[26] = 'pic27.jpg';
$rp_pic_w[26] = '';
$rp_pic_h[26] = '';
$rp_pic_txt[26] = '';
$rp_pic[27] = 'pic28.jpg';
$rp_pic_w[27] = '';
$rp_pic_h[27] = '';
$rp_pic_txt[27] = '';
$rp_pic[28] = 'pic29.jpg';
$rp_pic_w[28] = '';
$rp_pic_h[28] = '';
$rp_pic_txt[28] = '';
$rp_pic[29] = 'pic30.jpg';
$rp_pic_w[29] = '';
$rp_pic_h[29] = '';
$rp_pic_txt[29] = '';
*/
// Zahl der Bilder feststellen
$rp_picCount = $rp_pic.length;
// ---------- nothing to change from here ----------
function generateNumbers($min, $max, $anz)
{
$array = range($min, $max);
srand ((double)microtime()*1000000);
for($x=0;$x<$anz;$x++)
{
$i = rand(1, count($array))-1;
$erg[] = $array[$i];
array_splice($array, $i, 1);
}
return $erg;
}
// generate 3 different numbers
$rp_ran_array = generateNumbers(0, count($rp_pic)-1, $rp_pic_num);
$rp_str = "";
for($j=0;$j<$rp_pic_num;$j++)
{
$rp_ran = $rp_ran_array[$j];
$rp_p = $rp_pic_path.$rp_pic[$rp_ran];
$rp_p_w = $rp_pic_w[$rp_ran];
$rp_p_h = $rp_pic_h[$rp_ran];
$rp_p_txt = $rp_pic_txt[$rp_ran];
// use default values if no values are set
if($rp_p_txt=="")$rp_p_txt=$rp_default_txt; if($rp_p_w=="")$rp_p_w=$rp_default_w; if($rp_p_h=="")$rp_p_h=$rp_default_h;
// build HTML string
$rp_str .= $rp_spacer;
$rp_str .= "<img src="".$rp_p."" width="".$rp_p_w."" height="".$rp_p_h."" border="0" alt="".$rp_p_txt."" title="".$rp_p_txt."" onMouseOver="window.status=this.alt;return true;" onMouseOut="window.status='';return true;">";
}
// print HTML
echo($rp_str);
// print picture description
function picText($rp_pic)
{
global $rp_ran;
global $rp_alt_txt;
$rp_ran = $rp_ran[$rp_pic-1];
echo($rp_alt_txt[$rp_ran]);
}
?>