Skeeve: Zufallszahl, Wiederholung ausschließen

Beitrag lesen

Moin!

Wie wäre es hiermit? Beim ersten Durchlauf hast du doch die Auswahl zwischen 6 Bildern, danach nur noch zwischen 5. Also wird im 2ten und folgenden nur noch eine Zufallszahl von 2-6 ermittelt. War sie zufällig dieselbe wie zuvor, wird stattdessen die 1 genommen. Dies ist ein spezieller Fall einer "Mischroutine" bei der Du in einem Array von Größe n einfach alle möglichen erlaubten Werte speicherst. Danach würfelst Du in n Durchläufen einen Index im Bereich von "durchlauf" bis n. Das gefundene Array Element tauscht Du mit dem Element an Position "durchlauf". Am Ende ist eine gemischte Folge im Array.

<html>  
<head>  
<script language="JavaScript" type="text/javascript">
  
<!--  
  
//Bild-URL  
var URL = "<img src='img/IMG_";  
var wdh=0; // speichert die letzte Bildnummer  
var min=1; // 1 für den ersten Durchlauf, danach 2  
var max=6;  
  
function Bildwechsel(){  
  
//erzeugt eine Zufallszahl "zufall"; 6 Bilder, nummeriert von 1 bis 6  
var zufall =  min+Math.floor(Math.random()*(max-min)); // 1-6 gleichverteilt bzw. später 2-6  
  
if ( zufall == wdh ) {  
 zufall= 1;  
}  
  
document.getElementById('erhalteEigenschaften').innerHTML = URL+zufall+".jpg'>"  
  
//Speichert zufall für den nächsten Durchlauf  
wdh = zufall;  
min = 2;  
  
//Wiederaufruf der Funktion nach 1s  
setTimeout("Bildwechsel()", 1000);  
}  
  
//-->  

</script>  
</head>  
<body onload="Bildwechsel()">  
<div id="erhalteEigenschaften"></div>  
</body>  
  
</html>

-- Skeeve