TI-84 randInt関数はどのように乱数を生成しますか?私はこのPRNGを私のコンピュータに複製したいので、サンプルサイズを大きくすることができますが、どうすればよいか分かりません。電卓から数字5を一度にコピーすることはオプションではありません。 OS X 10.7.3を実行中コンピュータ上のTI-84乱数生成
1
A
答えて
1
コンピュータ上でその機能を正確に複製する方法はわかりませんが、一度に5つの数字しか生成する必要はありません。非常に大きな乱数サンプルをリストに格納しておけば、ti接続ソフトウェアを使用してコンピュータに転送することができます。
2
私のはるかに広範な答え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;
}
私はRandInt(5,97)
の値を生成するのTi-83エミュレータを使用:
これは上記のプログラムの出力と一致します:
$ ./a.out
92
89
18
52
42
73
9
36
97
23
関連する問題
- 1. 乱数生成
- 2. 乱数の生成
- 3. スパーク - 乱数生成
- 4. ATMega乱数生成
- 5. 乱数生成器
- 6. Spartan-3Eの乱数生成
- 7. 幾何乱数の生成
- 8. arc4random乱数生成器
- 9. 乱数生成器は、
- 10. MySQLプロシージャ乱数生成
- 11. 堅牢な乱数生成
- 12. Cauchyから乱数生成
- 13. 再帰乱数生成器
- 14. 複数のオブジェクトの乱数生成
- 15. 乱数の同じシーケンスの生成
- 16. foldMで乱数のリストを生成
- 17. 乱数のグループを生成する
- 18. C++乱数生成とPythonの違い
- 19. 加重乱数の生成R
- 20. AESカウンタモードの乱数生成器 - Ruby
- 21. 乱数生成器関連の質問
- 22. 乱数生成を一様に分散
- 23. PHPで乱数を生成する
- 24. GameplayKitによる乱数生成
- 25. C#乱数int - 謎を生成する
- 26. 乱数生成同じ番号は
- 27. C# - フィールドに乱数を生成する
- 28. C#/ XNA疑似乱数生成
- 29. Haskellで乱数を生成する
- 30. jinja2で乱数を生成する
それは私がやったことです。私は必要な数をすべて手に入れるのに5時間ほどかかりましたが、うまくいきました。 –