タグ

randomに関するyassのブックマーク (30)

  • 6.6. まとめ

    乱数の質を重視する場合 mt19937ar、長周期のSFMT、長周期のWELL(WELLのサイトからより長周期のものを得るべきである)あるいは長周期のmt-liteが、次元均等分布に優れる。 なお、いずれも暗号用途に直接使用するべきではない。 速度を重視する場合 乱数の質を度外視してよいなら、ほとんどの場合LCGが最速である。 x86アーキテクチャのSSE命令またはPowerPCアーキテクチャのAltiVec命令を使用可能ならば、SFMTがよい選択肢である。特に大量の乱数を必要とする場合は、block版を用いるのがよい。 SSEまたはAltiVecを使用できないならば、大量の乱数を生成するなら調律のないblock版mt-lite、さもなければxor128を用いるのがよいだろう。ただし、アーキテクチャによって傾向に差異があるため、実際の環境で速度を測定して選択するか、もしくは項6.3. 「実

  • いきちがいのぷろぐらむあ - 雑記/2010-01-26 - 2010-1-26[火] xorshift乱数のメモ

    XorShift乱数は、こちらとかのように短い関数で紹介されるけれど、たいていシード固定で書かれていて、シードを外部から与えたい場合はどうしたら、と悩んでしまう. もちろん、ちょっとぐぐったらシード設定できるソース載せてるサイトあるし、 おおもとのpaper に all 0でなければよいようなことかいてあるようだけど、 どの程度適当でよいのか不安にもなる. で、今さらながら2chの擬似乱数2 をみたら76に解説&seed設定付ソースがあった. シードは極端な設定をすると不自然な部分列が出力されるからMTのを参考にしたとある. ありがたく、これ流用させていただくことに... と、よくよくみれば、ここの初期化とほぼ同じ(改良版)のよう. その他、検索したときのサイトメモ. mt-liteの実行速度に xorshiftを含む各種乱数の速度比較あり. 良い乱数・悪い乱数に XorShiftと他の乱

  • Javaの乱数 - きしだのHatena

    最近、乱数について興味があって、いろいろ調べてたら、java.util.Randomはひとつめの値が乱数としては使い物にならないくらい偏りがあるらしい。 試しにこんなプログラムを書いてみます。 public class RandomRange { public static void main(String[] args){ Random r = new Random(); double min = Double.MAX_VALUE; double max = Double.MIN_VALUE; for(int i = 0; i < 1000; ++i){ r.setSeed(i); double x = r.nextDouble(); if(x > max) max = x; if(x < min) min = x; } System.out.printf("min=%.4f max=%

  • 重みを持つ要素の配列から、ランダムに1つ選択する。 - xif ノート

    地道に for だの使って処理してもいいんだけど、配列の要素の数が巨大になったときのパフォーマンスが心配だったので、二分探索にしてみた。 例えば、 『数十種類あるメッセージのうち1つをランダムに表示したいけど、うち数種類はレアにしたい』 みたいな時に使えるはず。 こういう処理は割と頻繁に使うので、汎用化しておくと便利。 サンプルコードは javascript 。 /** * weight が大きいほど選択される可能性が高い。 * weight は 1 以上でなければならない。 */ var messages = [ {message: "Hello1", weight: 100}, // 100/188 で選択される。 {message: "Hello2", weight: 50}, // 50/188 で選択される。 {message: "Hello3", weight: 25}, //

    重みを持つ要素の配列から、ランダムに1つ選択する。 - xif ノート
  • オンラインカジノで使用しているRNGの驚愕すべき力!

    オンラインカジノでは誰もが公平なゲームを楽しめるようにRNG(ランダム・ナンバー・ジェネレーター)が使用されています。「RNG なんだそれ?」って思うかもしれませんが、これはオンラインカジノの乱数生成器の事を言います。オンラインカジノと聞いて「遊びたいんけどイカサマしてそうでなんか怖い」と思っている人は読めばスッキリするんじゃないかと思います。 そもそも無料で遊べるゲームなら結構暇つぶし程度に遊ぶ人も多いので公平性なんて考える人はあまりいないと思います。例外として一度も勝つ事ができない麻雀ゲームや一度も勝つ事ができないカードゲームがあったなら「チッなんだこのゲームは全く勝てないじゃん!面白くない!」と公平性を考える事があるかもしれませんね。 特にオンラインカジノは「実際にお金を賭けてゲームをする」ので公平性に関してプレイヤーはかなりシビアに捉えているので、この部分が欠けてしまうとプレイヤー

    yass
    yass 2013/03/10
    "RNGのテストで約3億もの数字をテスト検証"
  • Generate random string/characters in JavaScript

    Ask questions, find answers and collaborate at work with Stack Overflow for Teams. Explore Teams Collectives™ on Stack Overflow Find centralized, trusted content and collaborate around the technologies you use most. Learn more about Collectives

    Generate random string/characters in JavaScript
  • #22 カジュアルに乱数を使う方法とその注意点 - KAYAC Engineers' Blog

    この記事はtech.kayac.com Advent Calendar 2012の22日目です。 @songmuです。ゲーム作ったりしてると、乱数が必要になってきますがそれについて書きます。 多くの人にとっては当たり前の話も多く出てくるかと思いますがご容赦ください。間違ってる記述があった場合は突っ込みください。 擬似乱数とは何か 計算機は単体では厳密な意味での乱数を生成することができません。実際には一様に分布する乱数の集合を算術的に求めている場合がほとんどです。 その乱数の集合は以下を満たす必要がありますが、そういう小難しいことは偉い人に任せて、巨人の肩に乗って解決してしまえば良いでしょう。 偏りがなく一様に分布している 途中の出力から未来が予測しづらい 高速に算出できるか つまり? 色々な疑似乱数生成法がありますが、多くの場合、 馬鹿でかい乱数の循環リストがある と考えるとわかりやすいで

    #22 カジュアルに乱数を使う方法とその注意点 - KAYAC Engineers' Blog
    yass
    yass 2012/12/25
  • 統計数理研究所 Random Number Generator

    こちらでは、定まった形式の乱数データをすぐに取得頂けます。乱数データは30分おきに新しいものに更新されています。 個数は全て100個で、1個ごとに改行されて出力されています。(改行コードはWindows(CRLF)です)

    yass
    yass 2012/03/09
  • Javaで乱数を生成しない - あしのあしあと

    ちょっと前に「Javaで乱数を生成する」というタイトルで、Javaで疑似乱数を生成する方法について書いてきた。 Javaで乱数を生成する(1) : 疑似乱数生成器の動作概要 Javaで乱数を生成する(2) : JavaAPIの紹介 Javaで乱数を生成する(3) : Tomcatのソースを読む準備 Javaで乱数を生成する(4) : Tomcatでの実装方法 予測困難な疑似乱数を得るためには、疑似乱数生成器を用いるにせよ、何らかのノイズ(エントロピ)が必要となることがわかった*1。正直、面倒。疑似乱数を生成しなくて済むならば、是非そうしたい。Webアプリケーションであれば、アプリケーションサーバやフレームワークが(きっと推測困難な)セッションIDを発行しているので、それを用いればよい。下手に自作しない方がよい。 セッションIDを用いれば(そのまま、あるいは加工して用いれば)よい例としては

    Javaで乱数を生成しない - あしのあしあと
  • Tabulation hashing - Wikipedia