アルゴリズム
C++0x の の話。 基本的なこととかは 本の虫: C++0xの新しい乱数ライブラリ、random を参照してください。 さて、上記の記事で登場している std::seed_seq ですが、 N3126 の 26.5.7.1 Class seed_seq によると、このクラスは内部に std::vector を保持して…
いろいろと検証コード書いて試してみた結果、こんな感じで行くことにしました: コード全文: http://ideone.com/RQ4KB struct Xor128 { // ... // 種を元に乱数を初期化する explicit Xor128( int_type seed ) : x(123456789), y(362436069), z(521288629),…
動機 前回の日記でやった見積りについてご指摘いただいたので、 実際に検証してみます。 検証方法 検証方法としては、単純に、内部状態の各 bit に対し、その bit だけが立った乱数生成器を用意し、 その乱数生成器を状態遷移させていき、その内部状態の変化…
前回の日記で Xorshift アルゴリズムについて書いた時、最後に 「初期化された後にしばらく乱数列を読み飛ばせば偏りは簡単に回避できる」 と書きましたが、では偏りを回避するには、何回くらい読み飛ばせばよいのか、少し考えてみました。 で、それを考える…
前回 BarrageLL の乱数について触れたので、今回もその続き。 計算機の応用において、擬似乱数というのは大切です。 なので、世の中には、いろいろな擬似乱数の生成アルゴリズムが存在するわけですが、 今回はその中で比較的新しいアルゴリズム、 xorshift …