Zufallszahl 02-B
Erweiterung des Beispiels 'Zufallszahl 02-A', zur Erzeugung von mehreren ganzzahligen Zufallszahlen innerhalb eines festgelegten Bereichs. Die Anzahl der Zufallszahlen wird von ihnen bestimmt. Die bereits im Beispiel 'Zufallszahl 02-A' eingestzte Funktion wird einfach mehrmals durchlaufen.
Zufallszahl zwischen X (einschließlich) und Y (einschließlich)
Doppelnennungen sind hier nicht ausgeschlossen!
Aber auch das kann, für einige Anwendungen, genau so gewollt sein. Ein Beispiel mit dem Ausschluss für Doppelnennungen ist in Arbeit.
Dieses Script ist angelehnt an das Script: Dave's Random Number.
 Dave's Random Number Generator is © 2001 dave@jupiterduo.com
23.01.2008, Formular zum Dialog
Das Script kann innerhalb ihrer Anwendung genutzt werden und gibt als Ergebnis Zusatzzahlen zur Weiternutzung zurück. Die Ermittlung der Zufallszahlen kann aber auch über einen Userdialog gesteuert werden. Dann wird der gültige Zahlenbereich und die Anzahl der Zufallszahlen über eine Eingabe (Formular) abgefragt werden. Für das Eingabeformular habe ich folgende Änderungen vorgenommen:
- Erfassen der Eingaben durch getElementById
- Ist das Eingabefeld leer?
- ist die Eingabe eine Zahl?
- ist die Eingabe eine Kommazahl?
- Prüfung Minimalwert > Maximalwert
- farbliche Kennzeichnung des Eingabefeldes bei Fehler
- Erneute Eingabe bei Fehler erzwungen
- Curser in das Feld setzen bei Neuberechnung
- Ausgabe des Ergebnisses durch getElementById
Meine Änderungen zur Prüfung und Filterung der Eingaben sind wichtig, um Fehlfunktionen weitgehend auszuschließen. Sie können die Funktion natürlich ohne Eingabeformular einsetzen, das hier lediglich zur Demonstration dargestellt wird.
Ich habe hier bewußt auf eine Prüfung der Differenz zwischen Minimal- und Maximalwert in Relation zur Anzahl der Zufallszahlen verzichtet. Es ist also ohne weiteres möglich, 8 Zufallszahlen zwischen 4 und 9 ermitteln zu lassen!
1) Zufallszahl ermitteln mit Dialog (Quellcode 1)
Zur Erinnerung: Die Funktion überprüft nicht, ob eine Zufallszahl bereits ermittlet wurde. Doppelnennungen können also vorkommen. Das ist so gewollt!
Wie funktioniert das?
Die Funktion randInt() zur Erzeugung einer Zufallszahl, die sie bereits im Beispiel 'Zufallszahl 02-A' kennen gelernt haben, ...
function randInt(min,max)
{
var div = (max - min) + 1
var randNum = Math.random()
for (var i = 0; i <= div - 1; i++)
{
if (randNum >= i / div && randNum < (i+1) / div)
{return i + min}
}
}
... wird einfacherweise mehrmals durchlaufen. Die Anzahl der Durchläufe entspricht der Anzahl der gewünschten Zufallszahlen.
function ZahlenSchreiben(anzahl,minimal,maximal) {
var Zahlen = "";
for(var x = 1;x <= anzahl;x++)
{
Zahlen = Zahlen + randInt(minimal,maximal) + ", "
}
return Zahlen;
}
2) Zufallszahl ermitteln ohne Dialog (Quellcode 2)
a) Um 5 Zahlen zwischen 1 und 12 zu finden:
<script type="text/javascript" language="JavaScript">
<!--
ZahlenSchreiben(5,1,12);
//-->
</script>
b) Um 5 Zahlen zwischen 1 und 12 zu schreiben
<script type="text/javascript" language="JavaScript">
<!--
// schreibt die Zufallszahlen in das Dokument
document.write("Das gerade ermittelte Ergebnis: " + ZahlenSchreiben(5,1,12));
//-->
</script>
c) Um 11 Zahlen zwischen 100 und 200 zu finden:
<script type="text/javascript" language="JavaScript">
<!--
ZahlenSchreiben(11,100,200);
//-->
</script>
d) Um 11 Zahlen zwischen 100 und 200 zu schreiben
<script type="text/javascript" language="JavaScript">
<!--
// schreibt die Zufallszahlen in das Dokument
document.write("Ergebnis: " + ZahlenSchreiben(11,100,200));
//-->
</script>

|