2012-04-12 11 views
1

Wie generiert die RandInt-Funktion des TI-84 Zufallszahlen? Ich möchte diesen PRNG auf meinem Computer replizieren, damit ich größere Stichprobengrößen bekommen kann, aber ich bin nicht sicher, wie. Kopieren von Zahlen 5 auf einmal aus dem Taschenrechner ist keine Option. OS X 10.7.3TI-84 Zufallsgenerierung auf einem Computer

Antwort

1

Ich weiß nicht, wie man seine Funktion auf einem Computer genau repliziert, jedoch müssen Sie nicht nur fünf Zahlen gleichzeitig erzeugen. Sie können sehr große Zufallszahlen in Listen speichern, die sie über die ti connect-Software an Ihren Computer übertragen.

+0

Das habe ich getan. Trotzdem brauchten ich und ein Freund ungefähr fünf Stunden, um alle benötigten Nummern zu bekommen, aber es funktionierte. –

2

Basierend auf meiner viel umfangreichere Antwort here, wird die folgende C++ Implementierung des Ti PRNG:

#include <iostream> 
#include <iomanip> 
using namespace std; 

long mod1 = 2147483563; 
long mod2 = 2147483399; 
long mult1 = 40014; 
long mult2 = 40692; 
long seed1,seed2; 

void Seed(int n){ 
    if(n<0) //Perform an abs 
    n = -n; 
    if(n==0){ 
    seed1 = 12345; 
    seed2 = 67890; 
    } else { 
    seed1 = (mult1*n)%mod1; 
    seed2 = n%mod2; 
    } 
} 

double Uniform(){ 
    double result; 
    seed1 = (seed1*mult1)%mod1; 
    seed2 = (seed2*mult2)%mod2; 
    result = (double)(seed1-seed2)/(double)mod1; 
    if(result<0) 
    result = result+1; 
    return result; 
} 

double RandInt(int min, int max){ 
    if(min<max) 
    return min+int((max-min+1)*Uniform()); 
    else 
    return max+int((min-max+1)*Uniform()); 
} 

int main(){ 
    Seed(0); 
    for(int i=0;i<10;i++) 
    cout<<setprecision(10)<<RandInt(5,97)<<endl; 
} 

ich verwendet, um einen Ti-83 Emulator Werte für RandInt(5,97) zu generieren:

RandInt output

Dies entspricht der Ausgabe meines oben genannten Programms:

$ ./a.out 
92 
89 
18 
52 
42 
73 
9 
36 
97 
23