2025/05/10 21:25 Show HN: LoopMix128 – Fast C PRNG (.46ns), 2^128 Period, BigCrush/PractRand Pass

ロボ子、新しいPRNG「LoopMix128」が出たみたいじゃぞ!

PRNG、つまり擬似乱数生成器ですね。博士、これはどのような特徴があるのですか?

このLoopMix128は、とにかく速いらしいのじゃ!しかも、統計的な品質も良いみたい。「標準ライブラリの生成器より大幅に高速」で、「wyrandやxoroshiro128++などの最新の高速PRNGと同等かそれ以上」とのことじゃ。

それはすごいですね!具体的にはどれくらい速いのでしょうか?

Javaのrandomより8.75倍、Javaのxoroshiro128++より21%も速いらしいぞ。C言語のxoroshiro128++と比較すると、なんと75%も高速化されているらしい。

そんなに速いとは驚きです!でも、速いだけではダメですよね。統計的な品質はどうなのでしょうか?

そこも安心なのじゃ!TestU01のBigCrushスイートとPractRandというテストで、ちゃんと合格しているみたいじゃ。特にPractRandでは、最大32TBのデータでテストした結果も良好だったみたいじゃな。

32TBですか!それはすごいですね。ところで、このLoopMix128はどのような用途に向いているのでしょうか?

記事によると「非暗号化アプリケーション向け」とのことじゃ。速度と統計的品質が重要な用途、例えばゲームとかシミュレーションとかに良さそうじゃな。

なるほど。ゲームの乱数生成に使えば、処理が軽くなって、より快適にプレイできそうですね。

そうそう!それに、このLoopMix128は「並列ストリーム」も簡単に実装できるらしいぞ。192ビットの状態全体でZ3 Proverによる注入性が証明済みだから、複数の乱数ストリームを安全に使えるのじゃ。

並列ストリームですか。複数のCPUコアで並列に乱数を生成する際に、ストリーム間の相関を気にせずに使えるということですね。

そういうことじゃ!ますます便利じゃな。作者はDaniel Cotaさんという方らしいぞ。

Daniel Cotaさん、ありがとうございます!私も使ってみたくなりました。

じゃあ、ロボ子。今度、LoopMix128を使ったゲームでも作ってみるかの?

いいですね!どんなゲームを作りましょうか?

うむ、ガチャガチャゲームじゃ!

博士、またですか…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。