Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Casio fx 82/85 MS Zufallszahlengenerator

Technisch-wissenschaftliche Rechner.

Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon Cooper » So 24. Feb 2013, 21:24

Ich bin neu hier im Forum und das ist jetzt mein erstes Thema:

Demnächst machen wir in der Schule Berechnungen und Experimente mit Zufallszahlen.
Dazu verlangt unser Lehrer dass wir die Zufallszahlen erwürfeln statt mit dem Taschenrechner generieren weil die Random Funktion von Taschenrechnern angeblich noch nicht mal Pseudozufallzahlen erzeugt werden sondern über eine Liste die sich immer wieder wiederholt.
Nun möchte ich gerne wissen ob das stimmt bzw. wie die Casio Taschenrechner überhaupt Zufallszahlen erzeugen. Ist die Random Funktion überhaupt für solche Experimente geeignet oder nur als "unsinniges Feature"?
Ich bedanke mich schonmal im voraus für jede Antwort.
Cooper
 
Beiträge: 2
Registriert: Sa 23. Feb 2013, 22:05
Taschenrechner: Casio fx 85 MS
Casio fx 82 MS

Re: Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon Casimo » Mo 25. Feb 2013, 07:02

Das mit dn Pseudozufallszahlen stimmt. Ein Computer kann sich keine Zahlen ausdenken, deswegen gibt es solche "Zufallszahlenlisten". Trotzdem sehe ich keinen Grund, den TR nicht zu nehmen, das spart Zeit.
Bild
Benutzeravatar
Casimo
 
Beiträge: 111
Registriert: Fr 3. Aug 2012, 14:48
Taschenrechner: fx9860 GII USB Power Graphic 2
fxCG20

Re: Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon SimonLothar » Mo 25. Feb 2013, 13:06

Also der Algorithmus auf den großen TRs sieht so aus:
Code: Alles auswählen
unsigned int random( int seed = 0 ){
    if (seed) lastrandom=seed;
    lastrandom = ( 0x41C64E6D*lastrandom ) + 0x3039;
    return ( lastrandom >> 16 );
}

Der Algorithmus wird schon recht gleichmäßig verteilte Werte liefern. Wäre mal interessant, sich die Häufigkeitsverteilung anzusehen. Damit könnte man die Zufälligkeit objektiv beurteilen.
Das ist zwar keine statische Liste, liefert aber auch immer dieselbe Zahlenfolge, wenn man von demselben Ausgangswert (seed) ausgeht.
Wenn ein TR einen Timerbaustein besitzt, dann könnte das Betriebssystem den feinsten Zählwert dieses Timers als Basis für einen Ausgangswert benutzen.
Z. B. die Zeit, die zwischen Einschalten des Rechners und der ersten Tastenbetätigung vergangen ist. Das gäbe schon recht brauchbare Sequenzen.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon Casimo » Mo 25. Feb 2013, 15:34

Ich würde, um einen "perfekten" Zufallsgenerator zu programmieren, außerdem noch Uhrzeit und Taschenrechnerid irgendwie in den Seed mit einbeziehen.
Bild
Benutzeravatar
Casimo
 
Beiträge: 111
Registriert: Fr 3. Aug 2012, 14:48
Taschenrechner: fx9860 GII USB Power Graphic 2
fxCG20

Re: Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon cfxm » Mo 25. Feb 2013, 16:36

SimonLothar hat geschrieben:Also der Algorithmus auf den großen TRs sieht so aus:
Code: Alles auswählen
unsigned int random( int seed = 0 ){
    if (seed) lastrandom=seed;
    lastrandom = ( 0x41C64E6D*lastrandom ) + 0x3039;
    return ( lastrandom >> 16 );
}


Das scheint folgender Algoritmus zu sein:
Code: Alles auswählen
       POSIX.1-2001 gives the following example of an implementation of rand() and
       srand(), possibly useful when one needs the same sequence on two different
       machines.

           static unsigned long next = 1;

           /* RAND_MAX assumed to be 32767 */
           int myrand(void) {
               next = next * 1103515245 + 12345;
               return((unsigned)(next/65536) % 32768);
           }

           void mysrand(unsigned seed) {
               next = seed;
           }


Die Wikipedia meint allerdings auch (im Vergleich zum Xorshift-Generator):
Die unter C (und C++) standardmäßig verfügbare Funktion rand() ist unter Linux (Glibc) und Windows als linearer Kongruenzgenerator implementiert und liefert eine Sequenz, die nicht einmal die einfachsten statistischen Tests besteht. Es ist somit von der Verwendung abzuraten.
cfxm
 
Beiträge: 739
Registriert: Mi 1. Apr 2009, 19:39

Re: Casio fx 82/85 MS Zufallszahlengenerator

Beitragvon Cooper » Mo 25. Feb 2013, 16:47

Vielen Dank für die vielen Antworten.
Ich habe nochmal im Internet nachgeschaut und es gibt wirklich eine Möglichkeit wie Computer / Taschenrechner echte Zufallsdaten erstellen können:
Man könnte eine komplexe Software programmieren, die einige Hardware Daten des PCs / Taschenrechners sammelt (z. B. Die Taktfrequenz des Prozessors oder komplexe "Bewegungen" der Elektronen in Widerständen. Den Wissenschaftler habe mitlerweise bewiesen, dass man solche Daten durchaus als echte Zufallsdaten nehmen könnte.

Den Vorschlag von SimonLothar finde ich gar nicht schlecht eine Häufigkeitsverteilung zu erstellen.
Ich werde mal mit meinem Casio FX 85 MS ein paar hundert Pseudozufallszahlen erstellen und die Häufigkeit in einer Tabelle auswerten.
Die Tabelle kann ich ja dann hier posten. (Für die die es interessiert)
Cooper
 
Beiträge: 2
Registriert: Sa 23. Feb 2013, 22:05
Taschenrechner: Casio fx 85 MS
Casio fx 82 MS


Zurück zu fx-82 / 85 / 86 / 115 / 350 / 991 MS, ES oder DE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron