質問

私は実装して最適化しようとしています Tiny Mersenne Twister(Tinymt) APIで要求されるアルゴリズムは、職場でチームと一緒に開発しています。アルゴリズムは、32ビットの符号なし整数「MAT1」、「MAT2」、「TMAT」、および4つの32ビットの符号なし整数幅である「ステータス」と呼ばれる配列を備えたC構造を使用します。

私は乱数生成の主題に比較的新しいです。しかし、私は過去数週間にわたって主題について多くのことを教えることができました。私は種子の目的が何であるかを知っています、線形合同、LSFR、GFSRなどのさまざまな方法です。したがって、私は自分の「宿題」をして、私の能力の最高の状態でトピックを研究しています(スタックオーバーフロー思考)。残念ながら、一般的にMersenne Twisterは非常に不十分に文書化されており、コードと数学を並べて説明する文書はほとんどありません。 Tinymtのドキュメントはさらに悪化しており、事実上存在しません!したがって、APIのこの部分に対する正確なドキシゲンコメントを開発することは難しいでしょう。

とはいえ、私がここで私を助けてくれるよりも、誰かがもっと資格を持っていることを願っています。前述のパラメーターの重要性は何ですか?彼らは何をしますか、彼らは何を意味しますか、彼らは何のために立っていますか?私の推測は次のとおりです:

  • MAT1-マトリックス1
  • MAT2-マトリックス2
  • TMAT-焼き戻しマトリックス
  • ステータス-127ビットワイド「シード」(最後のビットが行くところ、わかりません)

ユーザーが「MAT1」、「MAT2」、および「TMAT」の値を提供していることを考えると、値を提供する前に取る必要がある予防策はありますか?繰り返しになりますが、これはAPIとそのドキュメントのためのものなので、顧客にRNGを使用するために必要なものについて良いアイデアを提供し、うまくいけば他の仲間のプログラマーの生活をより簡単にすることができます。ありがとう!

役に立ちましたか?

解決

提供されたプログラムを使用して、PRNGのパラメーターを生成できます TINYMT32DC. 。これらのパラメーターは、アプリケーションごとに一度だけ生成する必要があります。 PRNGを呼び出すたびに、同じパラメーターを使用しますが、異なるシードが使用されます。パラメーターを変更したくない理由は、それらを生成することは(明らかに)時間がかかり、PRNGの初期化が迅速に設計されていることです。

これらのパラメーターにはいくつかの制約があるかもしれませんが、あなたはTinymtのデザイナーではないため、それらを認識していません。代わりに、法的パラメーターを生成する提供されたプログラムを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top