TI-84 randInt 函数如何生成随机数?我想在我的电脑上复制这个 PRNG,这样我可以获得更大的样本量,但我不确定如何。从计算器一次复制数字 5 不是一种选择。运行 OS X 10.7.3
问问题
516 次
2 回答
2
根据我在这里更广泛的回答,以下是 Ti PRNG 的 C++ 实现:
#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)
:
这与我上面的程序的输出相匹配:
$ ./a.out
92
89
18
52
42
73
9
36
97
23
于 2015-09-25T23:20:26.890 回答
1
我不知道如何在计算机上准确复制它的功能,但是您不必一次只生成五个数字。您可以将非常大的随机数样本存储在列表中,然后通过 ti connect 软件将它们传输到您的计算机。
于 2012-05-16T13:53:48.567 回答