メニエスの名のもとに

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

2016-01-01から1年間の記事一覧

Ziggurat アルゴリズム

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

dSFMTを元にした一様分布と正規分布をちょっと修正した

uniformIntFromDoubleクラスのテンプレートから返却値の型タイプを削除して、返却値はint32_t固定にした。いや、だってint64_tとか指定されても対応してないのですよ。それに、int8_t とか指定されても特別速い処理が出来るわけでもないし。 あとは、output…

dSFMTを元にした一様分布と正規分布

なんかね、コンパイルする度に速さが変わるんで、訳がわからない。 とりあえず、他の環境でもコンパイル出来るようにしたので、興味がある人はどれが速いのか試してみて欲しい。 github.com一般的なautotoolsなので ./configure make make check で作成とチ…

-O2 と -O3 は大違い

Oだけに。 いやあ、これまでg++ でコンパイルする時に -O3 を付けてたんだけど、-O2 とはそんなに違わないと思ってたんですよ。で、GitHubにソースを置くようになってからautotoolsを使うようになって、Makefile.am でやはり -O3 と指定して訳です。でも、ち…

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

なんとなく時間が半端に余ったので、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という変数を使った短いルー…

SFMTの256,512bit化への道

結構遠い道のりかも知れない 疑似乱数生成には以下の三つが重要なのである。 周期が最大であること 乱数性が良いこと 速度が速いこと 面倒くさいね。 dSFMTの256, 512bit化 SFMTには整数を生成するいわゆるSFMTと浮動小数点数生成に特化したdSFMTというのが…

ナンプレ:自動生成なのにうっかり綺麗な形になってしまった。

このブログでは、ナンプレ問題の自動生成とかをやっていた訳です。で、自動生成だからパズル雑誌に掲載されるような図柄の美しいパズルではなくて、難しいパズルを作ろうとしていたのでした。そのために、9x9の通常版ナンプレでは対称性をちょっと捨てて1個…