タグ

randomに関するnilabのブックマーク (7)

  • 線形合同法 - Wikipedia

    線形合同法(せんけいごうどうほう、英: Linear congruential generators, LCGs)とは、擬似乱数列の生成式の一つ。 漸化式 によって与えられる。A、B、Mは定数で、M>A、M>B、A>0、B≥0である。 上の式で、が、乱数の種であり、これに数を代入すると、が得られる。さらにを生成する場合には、を使う。以後、同様に行う。 例えば、定数をそれぞれ、A=3、B=5、M=13、乱数の種=8とすると、(上の式においてはXn+1を左辺に置いたが、今回は便宜上、右辺に置く) 次に乱数を生成する際は前回生成された乱数(今回は3)を使って、 以下、同じように、 となる。 生成される乱数列は周期性を持ち、上の例では8→3→1→8→3→……、を繰り返す。この周期は最大でMであり、以下の条件が満たされたときに最大周期Mをもつ。 BとMが互いに素である。 A-1が、Mの持つ全ての素因

    nilab
    nilab 2011/10/31
    Linear congruential generators, LCGs 「擬似乱数列を生成するアルゴリズムの一つ」線形合同法 - Wikipedia
  • 2010 November 24

    正規乱数を発生させるための手法の一つ。 なんでボックスミューラー使うの?普通の方法じゃダメなの? 1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方が、一般的によく知られた多くの擬似乱数生成器との組み合わせにおいては高速である。 - Wikipedia「乱数列」より だそうです。 以下,(自分にとって分かりやすく実用的な)C言語プログラム ・必要なライブラリ stdio.h, stdlib.h, math.h, time.h ・ソースコード(関数) 以下の入力から正規乱数を返す. mean:平均 sigma:分散 ちなみに標準正規分布であれば平均0,分散1 double Box_Muller(double mean, double sigma) { double x1,x2; double pi =

    nilab
    nilab 2011/10/26
    ボックスミューラー法 (Box Muller Method) : シンプルなサンプル
  • C言語(サンプルプログラム)

    正規乱数の発生・統計・度数分布 目次 正規乱数の発生(ボックスミュラー法) generate.c 統計(平均・分散・標準偏差・サンプル数) stat.c 度数分布(*によるプロット) splot.c 正規乱数の発生(ボックスミュラー法) generate.c /* Box-Muller method */ #include #include #include #define PI 3.141592653589793 int main( int argc, char *argv[] ) { int i; int n = 0; double m = 0.0; double s = 0.0; double u1 = 0.0; double u2 = 0.0; double g1 = 0.0; double g2 = 0.0; double r1; double r2; if( argc

    nilab
    nilab 2011/10/26
    C言語(サンプルプログラム) : 正規乱数の発生・統計・度数分布 : 正規乱数の発生(ボックスミュラー法) : 統計(平均・分散・標準偏差・サンプル数) : 度数分布(*によるプロット)
  • Mersenne Twister: A random number generator (since 1997/10)

    English Version News: MTToolBox をGitHubで公開しました。(2013/10/04) TinyMTをリリースしました。 (2011/06/20) MTGPをリリースしました。(2009/11/17) SIMD-oriented Fast Mersenne Twister (SFMT) をリリースしました。 SFMTはオリジナルのMersenne Twisterより約二倍速く、 よりよい均等分布特性を持ち、零超過初期状態からの回復も高速です。 SFMTのページを見てください。 (2007/1/31) お願い:使う時にemailを一通下されば、 今後の改良のはげみになります。 どんなささいな問題点でも、見つけ次第御連絡下さい。 m-mat @ math.sci.hiroshima-u.ac.jp (このメールアドレスは スペースを抜いて手で打ち直してください)

    nilab
    nilab 2010/11/25
    Mersenne Twister: A random number generator (since 1997/10)
  • SIMD-oriented Fast Mersenne Twister (SFMT)

    SIMD-oriented Fast Mersenne Twister (SFMT): twice faster than Mersenne Twister*1. English Version 最新情報 SFMT ver1.5.1 をリリースしました。(2017/2/22) SFMT ver1.5 をリリースしました。 53bit精度double出力にバグがありました。(2017/2/7) SFMT 論文の正誤表 を追加しました。(2015/9/1) dSFMT ver2.2.3 をリリースしました。(2013/12/19) SFMT ver1.4.1 をリリースしました。(2013/12/19) dSFMT ver2.2.2 をリリースしました。 ver2.2.2 はVisual C++ 2012 でコンパイルエラーになる部分を修正しました。 (2013/9/17) dSFMT ver

    nilab
    nilab 2010/11/25
    SIMD-oriented Fast Mersenne Twister (SFMT)
  • asp-edita.jp

    This domain may be for sale!

    nilab
    nilab 2010/11/25
    メルセンヌ・ツイスタJavascript移植版 - エンジニアが作る最新ITブログ by DODA「Copyrightなども無修正で保持しています f^^;」
  • 良い乱数・悪い乱数

    C言語標準ライブラリの乱数rand( )は質に問題があり、禁止している学会もある。 他にも乱数には様々なアルゴリズムがあるが、多くのものが問題を持っている。 最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 そもそも乱数とは 乱数とは、来サイコロを振って出る目から得られるような数を意味する。 このような乱数は予測不能なものである。 しかし、計算機を使って乱数を発生させた場合、 次に出る数は完全に決まっているので、予測不能とはいえない。 そこで、計算機で作り出される乱数を疑似乱数(PRNG)と呼び区別することがある。 ここでは、特にことわらない限り乱数とは疑似乱数のことを指すとする。 計算機でソフト的に乱数を発生させることの最大のメリットは、 再現性があることである。 初期状態が同じであれば、発生する乱数も全く同じものが得られる。 このことは

    nilab
    nilab 2005/08/02
    良い乱数・悪い乱数
  • 1