メニエスの名のもとに

プログラミング関係を中心としたぐだぐだブログ

疑似乱数

Ziggurat アルゴリズム

この前から、このブログでは、なんとなく特定の分布、特に正規分布の疑似乱数を生成する方法について書いているわけだが、 manieth.hatenablog.com manieth.hatenablog.com Ziggurat アルゴリズム 正規分布作成にZigguratアルゴリズムというのがあるらしい。…

メルセンヌ・ツイスターの小ネタ:自動ベクトル化

なんとなく時間が半端に余ったので、1年位前に気づいたような気がするが、今はどうなっているか知らない小ネタをひとつ。MersenneTwister をやや今風(あるいは俺流)に書くとこんな感じなんだけど #define MATA UINT32_C(0x9908b0df) #if defined(NOT_USE_…

一様乱数, それとは別に単精度浮動小数点数乱数

コメントに答えるには、コメント欄が狭いかなと思ったが、書いてみたらそれほど長くもなかったような。 一様乱数 C++ のstd::uniform_int_distributionが遅いという話。ある範囲の数を一様に出力する乱数が欲しい。これは簡単なようでいてそれほど簡単ではな…

SFMTの256,512bit化への道その2

浮動小数点数版については前回の記事を参照してください。 manieth.hatenablog.com 整数版 整数版はすでにAVX2版が存在するけど、AVX512F版は存在しない。なので作ってもいいかもしれない。実は、dSFMTで使用されているようなlungという変数を使った短いルー…

reducible ブランチをpushしました。

可約ジェネレータ開発ツール 疑似乱数生成器開発用ツールMTToolBoxの新機能、可約ジェネレータ開発ツールを入れたreducible ブランチをMSaito/MTToolBox · GitHubにpushしました。まだマージしてないけど、sample として Reducible MTを付けたので、使いたい…

重大なバグ

TinyMT と XSadd についての重大なバグが報告されました。 xsadd_float, xsadd_double, tinymt32_generate_float, tinymt64_generate_double 関数は[0, 1)区間の浮動小数点数、つまり0以上1未満の数を返すはずですが、バグにより1.0を返すことがありました。…

疑似乱数生成器

MTToolBox MTToolBox というのは、疑似乱数生成器を開発する際に利用できるツールである。これを公開したら、卒論や修論で疑似乱数生成器を作る人が続出して、様々な疑似乱数生成器が乱立し、どれがよいのやら速いのやらまったく分からなくなって世の中が混…

ナンプレ(数独)問題作成プログラム その14 疑似乱数

疑似乱数 これから digging hole アルゴリズムでナンプレの問題を作りたいわけだが、そのために疑似乱数を使う。だいたい何でもいいんだけど、比較的新しい(のでお気に入りの)xsadd を使ってみる。小さいし、速いし、MITライセンスだし。 元のソースはXORS…