【问题标题】:TI-84 random number generation on a computer在计算机上生成 TI-84 随机数
【发布时间】:2012-04-12 11:42:00
【问题描述】:

TI-84 randInt 函数如何生成随机数?我想在我的电脑上复制这个 PRNG,这样我就可以获得更大的样本量,但我不确定如何。从计算器一次复制数字 5 不是一种选择。运行 OS X 10.7.3

【问题讨论】:

    标签: algorithm random texas-instruments


    【解决方案1】:

    根据我更广泛的回答 here,以下是 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
    

    【讨论】:

      【解决方案2】:

      我不知道如何在计算机上准确复制其功能,但是您不必一次只生成五个数字。您可以将非常大的随机数样本存储在列表中,然后通过 ti connect 软件将它们传输到您的计算机。

      【讨论】:

      • 这就是我最终所做的。我和一个朋友仍然花了大约 5 个小时才得到我们需要的所有数字,但它奏效了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多