2012-04-12 127 views
1

TI-84 randInt函數如何生成隨機數?我想在我的電腦上覆制這個PRNG,這樣我可以得到一些更大的樣本量,但我不知道如何。從計算器一次複製數字5不是一種選擇。運行OS X 10.7.3在計算機上生成TI-84隨機數

回答

1

我不知道如何在計算機上完全複製它的功能,但是您不必一次只生成五個數字。您可以將非常大的隨機數樣本存儲在列表中,然後通過ti connect軟件將它們傳輸到您的計算機。

+0

這就是我最終做的。仍然花了我和一個朋友五個小時左右才能得到我們需要的所有數字,但它工作。 – 2012-05-16 14:09:40

2

根據我的更廣泛的答案here,下面是一個C++實現鈦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; 
} 

我用了一個TI-83模擬器生成值RandInt(5,97)

RandInt output

這與我上面的程序的輸出相匹配:

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