![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo zusammen, in diesem Beitrag habe ich beschrieben, wie mit den beiden OM-Mikrocontrollern Open-Macro und Open-Maxi Zufallszahlen in einem bestimmten Wertebereich erzeugt werden können. "((RAND SHR 1)+16384)" erzeugt bekanntlich Zufallszahlen zwischen 0 und 32767. Gesucht ist nun die passendste ganze Zahl x, die bei der Berechnungsvorschrift "((RAND SHR 1)+16384) / x" Zufallszahlen zwischen 0 und der größten gewünschten Zufallszahl produziert. Da Nachkommastellen vom Controller bei der Berechnung abgeschnitten werden, muß eins addiert werden und folgende Ungleichung erfüllt sein: "32767 / x < (größte_gewünschte_Zufallszahl + 1)" Umstellung: "x > 32767 / (größte_gewünschte_Zufallszahl + 1)" Beispiel: Es sollen Zufallszahlen zwischen 0 und 15 generiert werden. Einsetzen: "x > 32767 / 16.0" Der Taschenrechner liefert: "x > 2047.9375" Die Zahl x muß also größer 2047.9375 sein. Die nächsthöhere ganze Zahl ist 2048. Probe: "32767 / 2048.0 = 15.99951172" Es paßt also. Übrigens ergibt sich durch Wahl der passendsten Zahl x der geringste Fehler, bzw. die größte Genauigkeit, wie der relative Fehler in Prozent zeigt: "(16 - 32767 / 2048.0) / 16 * 100% = 0.003051757812%" Viel Spaß und Erfolg mit den OM-Mikrocontrollern! Dietmar Passender Link: Offizielle Infosite zu den OM-Mikrocontrollern Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |