Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Download: - ZIP, ca. 9,2 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / JavaScript und AJAX | vor >>
JavaScript und AJAX von Christian Wenz Das umfassende Handbuch
JavaScript und AJAX 839 S., mit DVD, 39,90 Euro Galileo Computing ISBN 3-89842-859-1 |
| Kapitel 6 Zufall
|  | 6.1 Zufallszahlen erstellen
|  |  | 6.1.1 JavaScript-Zufallszahlen
|  |  | 6.1.2 HP-Verfahren
|  |  | 6.1.3 Datumswert
|  | 6.2 Hilfsfunktionen
|  |  | 6.2.1 Zufallszahl aus einem Bereich
|  | 6.3 Anwendungsbeispiele
|  |  | 6.3.1 Lottozahlen
|  |  | 6.3.2 Zufallsbanner
## 6.3 Anwendungsbeispiele Mithilfe der in diesem Kapitel vorgestellten Funktionen können Sie nun so viele Zufallszahlen erzeugen, wie Sie möchten. Sollte Ihnen zufällig kein Verwendungszweck für diese Zahlen einfallen, finden Sie im Folgenden zwei Anwendungsbeispiele. ### 6.3.1 Lottozahlen Im deutschen Lottoblock werden zweimal pro Woche sechs (Zufalls-)Zahlen aus 49 sowie eine Zusatzzahl gezogen; in anderen Ländern ist das Vorgehen ähnlich, wenngleich sich die Zahlen leicht ändern. Ignorieren wir die Zusatzzahl, dann bleibt nur noch das Problem, sechs verschiedene Zahlen zu ziehen. Das geht aber recht einfach: Die Zahlen werden in einem Array gespeichert. Nach jedem Ziehen einer Zahl wird nachgesehen, ob die Zahl bereits im Array vorhanden ist. Falls nein, wird sie ins Array eingefügt:
    var lotto; // die Lottozahlen
    // ...
    var zahl = zufall_intervall(1, 49);
    for (var i=0; i < lotto.length; i++) {
       if (lotto[i] == zahl) {
          continue;
       }
    }
    lotto[lotto.length] = zahl;
Wie Sie sehen, fehlt hier noch ein wenig: Die Verwendung von continue deutet an, dass eine Schleife zum Einsatz kommt. Und in der Tat: In einer while-Schleife werden so lange Zahlen gezogen, bis das Array »voll« ist, also in unserem Beispiel sechs Elemente enthält:
    while (lotto.length < 6) {
       // ...
    }
Das birgt natürlich ein wenig Gefahrenpotenzial in sich: Wenn Sie die Werte ungünstig wählen (etwa: sechs verschiedene Zufallszahlen zwischen eins und fünf), erhalten Sie eine Endlosschleife. Achten Sie also darauf, welche Grenzen Sie angeben! Hier folgt das komplette Listing:
    <html>
    <head>
    <title>Lottozahlen</title>
    <script type="text/javascript">
    function zufall_intervall(a, b) {
       var z = Math.random();
       z *= (b – a + 1);
       z += a;
       return (Math.floor(z));
    }
    </script>
    </head>
    <body>
    <h1>Lottozahlen</h1>
    <script type="text/javascript"><!--
    var lotto = [];
    while (lotto.length < 6) {
       var zahl = zufall_intervall(1, 49);
       for (var i=0; i < lotto.length; i++) {
          if (lotto[i] == zahl) {
             continue;
          }
       }
       lotto[lotto.length] = zahl;
    }

    document.write(lotto.toString());
    //--></script>
    </body>
    </html>
Zum Vergleich noch das Listing für den Einsatz des HP-Algorithmus zur Generierung der Zufallszahlen:
    <html>
    <head>
    <title>Lottozahlen</title>
    <script type="text/javascript">
    var zufall_hp_zahl = 0;
    function zufall_hp() {
       if (zufall_hp_zahl == 0) {
          var t = new Date().getTime().toString();
          var t2 = "";
          for (var i=2; i<=t.length; i++) {
             t2 += t.charAt(t.length-i);
          }
          eval("zufall_hp_zahl = 0." + t2 + ";");
       }
       zufall_hp_zahl += Math.PI;
       zufall_hp_zahl = Math.pow(zufall_hp_zahl, 8);
       zufall_hp_zahl -= Math.floor(zufall_hp_zahl);
       return zufall_hp_zahl;
    }
    function zufall_intervall_hp(a, b) {
       var z = zufall_hp();
       z *= (b – a + 1);
       z += a;
       return (Math.floor(z));
    }
    </script>
    </head>
    <body>
    <h1>Lottozahlen</h1>
    <script type="text/javascript"><!--
    var lotto = new Array();
    while (lotto.length < 6) {
       var zahl = zufall_intervall_hp(1, 49);
       for (var i=0; i < lotto.length; i++) {
          if (lotto[i] == zahl) {
             continue;
          }
       }
       lotto[lotto.length] = zahl;
    }

    document.write(lotto.toString());
    //--></script>
    </body>
    </html>
Hier klicken, um das Bild zu Vergrößern Abbildung 6.2 Die zufällig ermittelten Lottozahlen ### 6.3.2 Zufallsbanner Eine häufige Anwendung besteht darin, einen von mehreren Textbausteinen einzublenden. Stellen Sie sich vor, Sie haben einen Satz von zehn Werbebannern, die alle gleichmäßig oft aufgerufen werden sollen. Dies ist ein Paradebeispiel für die Anwendung von Zufallszahlen. An diesem Beispiel soll eine mögliche Zusammenarbeit zwischen Skriptprogrammierern, den Skripten in diesem Buch und einem HTML-Programmierer demonstriert werden. Von der Konzeption her wäre es möglich, eine Funktion zu erstellen, die als Parameter ein Array mit Links und ein (gleich sortiertes Array) mit den zugehörigen Linktexten erwartet. Bei grafischen Bannern muss anstelle der Linktexte ein Array mit den Namen der Bannergrafiken erstellt werden. Dies ist jedoch etwas schwierig und umständlich. Stattdessen soll hier ein anderer Weg gewählt werden. Der Code zur Auswahl der einzelnen URLs und der zugehörigen Linktexte wird direkt in die HTML-Seite integriert. Von den Skripten aus diesem Kapitel wird lediglich eine Funktion zur Zufallszahlengenerierung eingesetzt. Damit dieses Beispiel bei Ihnen funktioniert, müssen Sie zunächst die im Code verwendeten Banner erstellen. Als Zufallsfunktion bieten sich hier zufall_intervall(a, b) oder zufall_intervall_hp(a, b) an:
    <html>
    <head>
    <title>Zufallsbanner</title>
    <script type="text/javascript"><!--
    function zufall_intervall(a, b) {
      var z = Math.random();
      z *= (b – a + 1);
      z += a;
      return (Math.floor(z));
    }

    // Variablen mit URLs und Linktexten
    var urls = new Array();
    var texte = new Array();
    var grafiken = new Array();

    urls[urls.length] = "http://www.microsoft.de/";
    texte[texte.length] = "Microsoft Deutschland";
    grafiken[grafiken.length] = "microsoft.png";
    urls[urls.length] = "http://www.mozilla.com/";
    texte[texte.length] = "Mozilla Foundation";
    grafiken[grafiken.length] = "mozilla.png";

    urls[urls.length] = "http://www.opera.com/";
    texte[texte.length] = "Opera Browser";
    grafiken[grafiken.length] = "opera.png";

    var zufall = zufall_intervall(0, urls.length – 1);
    var url = urls[zufall];
    var text = texte[zufall];
    var grafik = grafiken[zufall];
    //--></script>
    </head>
    <body>
    <h1>Zufallsbanner</h1>
    <script type="text/javascript"><!--
    document.write("<a href=\"" + url + "\"\>");
    document.write("<img src=\"" + grafik +"\" border=\"0\" / /\>");
    // alternativ für Textlinks: document.write(text);
    document.write("</a\>");
    //--></script>
    </body>
    </html>
Im oben dargestellten Listing finden Sie parallel dazu noch den Code für Textlinks. Anstelle der Ausgabe der Grafik
    document.write("<img src=\"" + grafik +"\" border=\"0\" /\>");
muss der entsprechende Text für den Link ausgegeben werden:
    document.write(text);
1 Ausgegraben aus: Schülerduden – Die Mathematik II, 3., neu bearbeitete und erweiterte Auflage, Dudenverlag 1991
<< zurück | <top> | vor >>
Zum Katalog
JavaScript und AJAX bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| JavaScript und AJAX - Das Video-Training
| Webseiten programmieren und gestalten
| XHTML, HTML und CSS
| CSS-Praxis
| AJAX
| PHP 5 und MySQL 5
| TYPO3 4.0
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de