タグ

randomに関するyukimori_726のブックマーク (16)

  • 「一様乱数の平均値を正規乱数として代用する」という話をゆるふわ統計的に検証する

    「一様乱数を足し合わせて平均値をとった値は正規分布っぽくなるよ」というツイートを見かけて、「それって統計的にどうなんだろう?」という疑問が湧いたので検証してみました。 はじめに 昨日・一昨日ぐらいに Twitter 上でちょっとした話題になっていた アニメーションの監修で、「 Random();の代わりに、(Random()+Random()+Rrandom()+Random()+Random())/5.0f; を使うと、動きにコクが出る」と言ったら、ピュアオーディオ扱いされるのですが・・・これは根拠のあるアルゴです。 — 深津 貴之 (@fladdict) 2016年11月3日 というツイートに関連して、「一様乱数の平均値を正規乱数として代用する」的なツイートをちらほら見かけて気になっていたので、統計的に検証してみましたよ、というブログエントリです (このツイート自体に対して揶揄するつも

    「一様乱数の平均値を正規乱数として代用する」という話をゆるふわ統計的に検証する
  • 重み付き乱数列の生成 (Java) - argius note

    個人的なコードを書いている中で、重みを付けた乱数列が必要になりました。 具体的には、数が大きいほど発生頻度が高くなるような乱数の生成です。 これについて、どうするのが一般的なのか知らなかったので、調べてみました。 (結論から言うと、一般的な方法がこれ、というのは分かっていません。) 計算式自体は言語を問いませんが、実装例はJavaを使っています。 実行環境 サンプルコードでストリームやラムダを使っているため、Java8以上が必要です。 Java8 Windows 7 64bit JREu101 重み付け無しで乱数列を生成 intの乱数列を取得するのに、以下のコードを実行しました。 IntSupplierのラムダ式を変更すれば、乱数生成方法を変えることができます。 乱数生成関数を用意する必要が無ければ、java.util.Randomクラスのints()メソッドで乱数のIntStreamが得

    重み付き乱数列の生成 (Java) - argius note
  • /dev/random - a new approach [LWN.net]

    Hi Herbert, Ted, The venerable Linux /dev/random served users of cryptographic mechanisms well for a long time. Its behavior is well understood to deliver entropic data. In the last years, however, the Linux /dev/random showed signs of age where it has challenges to cope with modern computing environments ranging from tiny embedded systems, over new hardware resources such as SSDs, up to massive p

  • ズンドコキヨシ with C using 128bit XORshift(擬似乱数生成) - Qiita

    ブックマークを整理してたら見つけた。 http://d.hatena.ne.jp/jetbead/20121202/1354406422 2.XORshift(擬似乱数生成) xor演算とビットシフトのみから高速に生成できる擬似乱数です。 マラソンマッチなどで使えそうでしょうか。 いえ。ズンドコキヨシで使えます。 code #include <stdio.h> #include <stdint.h> // Thaks to http://d.hatena.ne.jp/jetbead uint32_t xor128(void){ static uint32_t x = 123456789; static uint32_t y = 362436069; static uint32_t z = 521288629; static uint32_t w = 88675123; uint32_t t

    ズンドコキヨシ with C using 128bit XORshift(擬似乱数生成) - Qiita
  • PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記

    メルセンヌ・ツイスターと似て非なるアルゴリズムが実装されていたことが発覚して話題の PHP の mt_rand 関数の品質を統計的に検証しました.果たして,PHP の「壊れた」mt_rand は安心して使うことができるのでしょうか……? ちなみに,結論から言うと,PHP の壊れた mt_rand は,(少なくともこのテストの範囲では)家メルセンヌ・ツイスターと遜色ない品質を持っているようです.ただし,最後に PHP の乱数の別の懸念点についても紹介します. 壊れた mt_rand とは PHP の mt_rand は,ドキュメントによると,有名な乱数生成アルゴリズム「メルセンヌ・ツイスター」を利用して高品質の乱数を生成する関数です.ところが,どうやら一部では知られていたこととして,PHP の mt_rand の実装にはバグがあり,家メルセンヌ・ツイスターと挙動が一致していませんでした.

    PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記
  • pythonの乱数いろいろ - xargs's blog

    2014-04-07 pythonの乱数いろいろ Python pythonの乱数 python の乱数といえば、random.random()やrandom.randint()をよく利用しますが、randomにはもっとたくさんの乱数生成手法があります。まとめてみましょう。 http://docs.python.org/3.2/library/random.html より On the real line, there are functions to compute uniform, normal (Gaussian), lognormal, negative exponential, gamma, and beta distributions. For generating distributions of angles, the von Mises distribution is a

    pythonの乱数いろいろ - xargs's blog
  • 標準ライブラリrandomの分布生成器は処理系依存 - yohhoyの日記

    C++標準ライブラリ<random>で提供される分布生成器(distribution)は、具体的なアルゴリズムまで規定しないため処理系毎に異なる乱数列が得られる。乱数生成エンジン(engine)のアルゴリズム/パラメータが言語仕様で定義されるのとは対照的(→id:yohhoy:20130719)。 #include <random> std::mt19937 rng; // engine std::normal_distribution<> dist; // distribution // rng()で生成される値は全処理系で同一 // dist(rng)で生成される値は処理系依存 複数の処理系間で同一乱数列を得る必要があるときは、Boost.Randomライブラリなどを利用すること。正直、C++標準でポータブルな分布生成器まで提供した方が良かったのでは… 2016-02-25追記:Boo

    標準ライブラリrandomの分布生成器は処理系依存 - yohhoyの日記
  • 機械学習.vs.乱数 - 小人さんの妄想

    新年おめでとうございます。久しぶりにブログを更新します。どっこい生きてます。 昨年は、たった1回しか更新しませんでした。 今年はブログを書けるくらいのゆとりを持ちたいものです。 さて、昨年までを振り返ると、一部で「サザエさんじゃんけん予想」が話題になったことがありました。 なんでも8割以上の的中率を叩き出した方もおられるとか。 そこまでするには相当の入れ込みが必要でしょうが、ちょっとパソコンで試すだけなら、わりと手軽にできます。 予想の方法はいろいろありますが、私は以下のブログを参考に、scikit-learnという機械学習を試してみました。 * サザエさんのジャンケンの次の手を決定木で予測+可視化してみた >> http://sucrose.hatenablog.com/entry/2014/11/23/230622 やったことは、上のブログにある通りです。 ・パソコン上に Python

    機械学習.vs.乱数 - 小人さんの妄想
  • Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理

    2015年12月17日、Google ChromeJavaScript エンジン(処理系)である V8 の公式ブログにて、 JavaScript の標準的な乱数生成APIである Math.random() の背後で使われているアルゴリズムの変更がアナウンスされました。 Math.random() 関数は JavaScript を利用する際には比較的よく使われる関数ですので、親しみのある方も多いのではないかと思います。 新たなバグの発見や、従来より優秀なアルゴリズムの発見によってアルゴリズムが変更されること自体はそれほど珍しくはないものの、 技術的には枯れていると思われる Math.random() のような基的な処理の背後のアルゴリズムが変更されたことに驚きを感じる方も少なくないかと思いますが、 それ以上に注目すべきはその変更後のアルゴリズムです。 実際に採用されたアルゴリズムの原

    Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理
  • Numpyによる乱数生成まとめ - Qiita

    Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意されている。 一様乱数 numpy.random.rand() で 0〜1 の一様乱数を生成する。引数を指定すれば複数の乱数を生成できる。乱数の範囲を変えたい場合は後からベクトル演算をすれば良い。 from numpy.random import * rand() # 0〜1の乱数を1個生成 rand(100) # 0〜1の乱数を100個生成 rand(10,10) # 0〜1の乱数で 10x10 の行列を生成 rand(100) * 40 + 30 # 30〜70の乱数を100個生成 from numpy.random import * """ 標準正規分布。いわゆるガウシアン。標準正規分布ならば

    Numpyによる乱数生成まとめ - Qiita
  • Javaでメルセンヌ・ツイスタを使う | Hack

    ライブラリを入手 今回はこちらのsfmtライブラリを使う。 http://www001.upp.so-net.ne.jp/isaku/rand2.htmlsfmt.zip : ライブラリ一式」からダウンロード。 インストール zipを解凍したら「SfmtJAVA」を開く。 数字のフォルダがたくさん並んでいるが周期が違うのみで中身はほとんど変わりなし。 適当なフォルダを選んでその中にある「Sfmt.java」をプロジェクトにインポートすればOK。 Readme.txtに詳しい使い方が載っている。 使い方 Sfmt rnd = new Sfmt([整数値、または整数値の配列]); のようにSfmtオブジェクトを作成して使用準備完了。 整数値はシード値。 以下のようにcurrenttimeとかにしてやると毎回生成時にシードが変わって幸せ。 int[] init_key = {(int)

    Javaでメルセンヌ・ツイスタを使う | Hack
  • Linuxで扱う乱数に関する話 – @knok blog

    これはLinux Advent Calendar4日目の記事です。 Unix系OSには、カーネルに乱数生成器を持つ実装が多くあります。乱数は暗号分野でも利用され、非常に重要な位置を占めています。Linuxにおける乱数に関する話題を取りあげてみます。 エントロピープール 一般的に、特別なハードウェアを持たない限り、真の乱数を計算機が生成することは困難です。Linuxでは、質の良い乱数を生成するためにエントロピープールと呼ばれる領域を持っています。エントロピープールには、キーボードの入力タイミングやストレージ、ネットワークなどで発生するハードウェア割り込みなどをもとにした推測の困難な情報(環境ノイズ)が蓄積されます。乱数の生成時には、このエントロピープールの内容を消費、加工します。 エントロピープールにどの程度情報がたまっているかを調べるには、/proc/sys/kernel/random/e

  • 2008-11-10

    最近、乱数について興味があって、いろいろ調べてたら、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=%

    2008-11-10
  • あしのあしあと

    2020-05-17 情報処理技術者試験で学ぶ SAML 勉強会用に、急いで作りました。土日しんだ。 とりあえず、見切り発車(0.9.1版)で公開します。これで乗り切るしかない。 よかったら、SlideShare のページから、ダウンロードしてください。 間違いがあったら、指摘いただけるとうれしいです。 2020-03-29 新人教育 ~ 言葉を選び、よく対話すれば、学びは深くなる 仕事 あしです。 今日、「ゼロから教えて 新人教育」という書籍を読んだので、学んだことをシェア(ウソ、メモ)しておきます。 絵や図が多いので、さらっと頭に入れるには、とてもよい書籍だと思います*1。 ゼロから教えて 新人教育 作者:大部 美知子 発売日: 20… 2020-02-19 応用情報・午後・セキュリティを解く(R01春)その 1 あしです。こんにちは。 今回は、応用情報処理技術者試験、2019 年

    あしのあしあと
  • Javaで毎回完全に異なる乱数を取得する方法 - No Programming, No Life

    こちらの記事はJavaで毎回完全に異なる乱数を取得する方法 | Think Twiceに移設しました。 >

    Javaで毎回完全に異なる乱数を取得する方法 - No Programming, No Life
  • 良い乱数・悪い乱数

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

  • 1