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
1
A
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.
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:
Dies entspricht der Ausgabe meines oben genannten Programms:
$ ./a.out
92
89
18
52
42
73
9
36
97
23
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. –