タグ

乱数に関するmohnoのブックマーク (14)

  • [0.0, 1.0) の乱数を得るための“本当の”方法

    レイトレ合宿9(*)のセミナー発表スライドです。 * https://sites.google.com/view/rtcamp9/home - 2023/09/08 “除算法2”追記。(@Reputelessさんありがとうございました)

    [0.0, 1.0) の乱数を得るための“本当の”方法
    mohno
    mohno 2023/09/04
    うわっ、めんどくさ。floatなんか使うな……とはいかないのかな、SIMDとかあるし。(現実に困ったんだろうけど)1.0が出てきて困るなら捨てる、で終わらせそう。
  • 【C】srand(time(NULL))をしても同じ乱数が生成される

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

    【C】srand(time(NULL))をしても同じ乱数が生成される
    mohno
    mohno 2022/01/07
    そもそもsrandの呼び出しは1回だけにしろ(←よくある初歩的なミスだが)、というのはさておき内部で7の倍数を使っているというのはちょっとな。/「0〜6の乱数を生成して6段階」←7段階だろ。
  • そのシャッフル、本当にシャッフルですか?何気ない落とし穴にハマった話 - BASEプロダクトチームブログ

    こんにちは、BASEのフロントエンドチームでエンジニアリングマネージャーをやっている松原(@simezi9)です。 私は最近ではマネージャーとしてコードを書くことよりもチームの編成や採用などをメインに業務を行っているのですが、 そんな中でチラっと書いたコードで見事に落とし穴にハマって失敗をしたのでその共有記事です まえがき BASEのフロントエンドチームは現在15名ほど(うち業務委託5名)で運営されています。 この人数は今後もどんどん増えていく予定なのですが、目下全社的にリモートワークになっている事情も手伝ってメンバー同士の関係性が希薄になってしまう懸念を持っていました。 BASEの中では常に複数のプロジェクトが走っているのですが、それぞれのプロジェクトフロントエンドエンジニアは2〜3名ずつ配置されています。 そんななかでアサインされた人同士がフロントエンドエンジニア同士であるにも関わら

    そのシャッフル、本当にシャッフルですか?何気ない落とし穴にハマった話 - BASEプロダクトチームブログ
    mohno
    mohno 2021/03/10
    いや、むしろ、こんなシャッフル思いつかないぞ。乱数なんてソートの前提(推移律)が成立しないじゃん。「フィッシャーイェーツのアルゴリズム」←定番だよね。
  • シミュレーションとは、乱数を呪文とした「神への祈り」である

    世の中には、全てのパターンを網羅的に調べることができないほど複雑な事象がある。 その一部の要素に乱数を用いて網羅性の代替とすることを、人類は「シミュレーション」という科学っぽい名称で呼んだ。 しかし、乱数を用いるシミュレーション(モンテカルロ・シミュレーション)は、科学を途中過程に置いた信仰だと思う。 乱数を用いた時点で、結果がそれこそ神のみぞ知る厳密解に合致しているのか、多くの場合わからない。 そもそも、その合致を数式的に証明できるのであれば、シミュレーションなんか必要ないわけで。 それは、大規模シミュレーションとか呼ばれるものなんかで特にそうだろう。 大規模となれば、計算には莫大な時間と費用がかかる。 なので、乱数の使用数に比して、統計的信頼度を満たすほどの回数で試行するのは困難であろう。 そうなると、厳密解への合致はそのシミュレーションへの信頼感といった信仰によってしか期待できない。

    シミュレーションとは、乱数を呪文とした「神への祈り」である
    mohno
    mohno 2021/02/28
    さんざん言われているが、モンテカルロ法なんてシミュレーションのごく一部の話だよね。毎回同じ数値じゃ困るから乱数を使うという話なのに「統計的信頼度」とか。
  • PHP の乱数実装がグダグダな話

    2022-07-19 これらの問題を解決する Random Extension 5.x 並びに Random Extension Improvement RFC が可決され、 master に merge されました。 PHP 8.2 より利用可能になります。 https://wiki.php.net/rfc/rng_extension https://wiki.php.net/rfc/random_extension_improvement https://github.com/php/php-src/commit/4d8dd8d258ff365b146bcadcb277ede8992706d0 2022-06-18 これらの問題を解決するため、 PHP 8.2 に対して Random Extension 5.x の RFC が作成され、投票が始まっています 2021-01-15 PHP

    PHP の乱数実装がグダグダな話
    mohno
    mohno 2020/12/14
    リバートする人の気持ちは分かる。そういうのは、他の名前で……と思ったら random_int というのがあるんだな。「どうすればいいのか」
  • 乱数について本気出して考えてみる|TechRacho by BPS株式会社

    プログラミングをやっていると、様々な乱数に出会います。乱数に関しては大勢の研究者が色々な研究結果を出しているため、種類も増え、いったいどれを使えばいいのかと悩む原因にもなります。 大勢が研究し利用している分野ですから、私以外でも大勢が乱数に関する記事を書いているため、あえて新しい記事を書く価値は高くないかもしれません。まあ、既に理解している人はここで記事を閉じるか、暇つぶし程度の感覚で読んでいただくと良いかと思います。 真乱数と疑似乱数 プログラミングの世界の中でいわゆる "乱数" として扱われることが多いのは擬似乱数です。疑似、と付くからには、これは実のところ乱数ではないと言えます。とは言え、擬似乱数を乱数でないと言ってしまうと話が終わってしまうので、疑似乱数を含む乱数を広義の乱数とします。この記事で扱うのは広義の乱数です。逆に、狭義の乱数、物の乱数は真乱数と言います。 物と言いまし

    乱数について本気出して考えてみる|TechRacho by BPS株式会社
    mohno
    mohno 2019/12/26
    モンテカルロ法って、乱数である意味がない場合もあるよなあ、と思ったら、一様な数値列を準乱数というのか。
  • 北朝鮮乱数放送比較研究

    2016年6月24日から再開された平壌放送を通じての北朝鮮からの乱数放送(暗号放送)。来は工作員に向けた工作活動のための放送だが、再開後の放送形態は、2000年までの放送とは大きく異なる。2017年2月に金正男氏が殺害されたときの指令に利用されたとか、5月のミサイル発射も予告されていたなどと言う報道もあったが、果たしてそうなのか。北朝鮮乱数放送の今と昔を比較した研究報告を2017年8月の第39回近隣諸国放送研究フォーラムで行った。 ■はじめに 2000年12月8日をもって廃止された北朝鮮の音声による乱数放送(A-3放送)が2016年6月24日から再開された。韓国や日に向けた対南、対日工作のための暗号放送と言われた北朝鮮乱数放送について、2000年までの放送と、2016年の再開後の放送について、いろいろな面から比較してみることにする。 ■2000年以前の乱数放送 2000年以前の乱数放送

    mohno
    mohno 2018/02/13
    「2016年6月24日から再開された乱数放送は…暗号そのものが意味のある内容なのかは不明で、偽装工作、あるいは攪乱のための放送だと言わざるを得ない」「本当に問題集ならば、ほぼJRの大型時刻表のような分厚いもの」
  • エレガントな解法、エレファントな解法 〜モンテカルロ法を添えて〜|山本一成🚗TURING

    問 コインを100回投げて、表か裏が10回連続で出る確率は? 皆さんこの問題解けますでしょうか?私は正直解ける気がしません。そもそも何%くらいなのかすら、うまく推測できません。今日は、しかし皆さんには全然別の方法論を共有できればと思います。 その方法論とはずばり実際に投げてみましょう。「コインを100回投げて、表か裏が10回連続で出るかどうか」を100回あるいは1000回くらい試行してみたらそれなりに正しい確率が出ると思いませんか?実際にでます。 でもいくらなんでも現実にするのはつらいですよね。そこでせっかくなのでコンピュータに投げさせましょう。といっても実際に投げるのではなく、コンピュータの中で乱数(ランダム)を発生させて、それで投げていることにしましょう。プログラムで書くとこんな感じです。 コインを100回投げて、表か裏が10回連続で出るかどうか調べるプログラム。試行回数が増えるほどに

    エレガントな解法、エレファントな解法 〜モンテカルロ法を添えて〜|山本一成🚗TURING
    mohno
    mohno 2018/02/04
    コインを100回投げるまでに、ということか。こういうのだと総数が求められるんじゃ?と思ったら、速攻で答えが出てた^_^;円周率とか格子点の方が正確に計算できるよね。
  • Randomクラスの仕様が.NET Core 2.0で変わっていた話 - Qiita

    C#で乱数を取得するのによく使用するRandomクラスについての話です。 これまでのRandomクラス 試しに以下のコードを.NET Frameworkや.NET Core 1.x系、Monoで実行すると(タイミングにもよりますが)全部同じ値が出力されると思います。 for (var i = 0; i < 10; i ++) { Console.WriteLine(new Random().Next()); } これは結構有名な話でRandomクラスは引数なしのコンストラクタでインスタンス化すると、内部で使用する乱数を生成するためのシード値にEnvironment.TickCount(OSが起動してからの時間)を使用するので、ミリ秒未満でインスタンスが複数生成されると同一のシード値になって生成される乱数も同じになってしまうという現象です。 シングルスレッドで動くアプリケーションなら同時にR

    Randomクラスの仕様が.NET Core 2.0で変わっていた話 - Qiita
    mohno
    mohno 2018/01/26
    「Randomクラスは引数なしのコンストラクタでインスタンス化すると、内部で使用する乱数を生成するためのシード値にEnvironment.TickCountを使用する」←ああ、変えようとしてるんだったか、くらい忘れてる……
  • 十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama

    いろいろなソフトウェアで、大きいランダムな値をユニークな値とみなすということが行われている。例えばユニークな識別子としてよく使われるUUIDはただの122ビットの乱数だ。gitもSHA-1ハッシュ値が160ビットの乱数のように扱えることを期待して、それをユニークな識別子として使っていた。実際にはランダムな2つの値が同じになる確率はゼロではないのに、なぜこれが安全なやり方だと言えるのだろうか? それについてちょっと説明してみよう。 あるシステムが、乱数で生成された識別子の衝突のなさに依存しているとして、仮に衝突が発生した場合、相当悪い結果、例えば復旧不可能な形でデータベースが壊れてしまうとしよう。これはどれくらい危険なのだろうか? 数学の問題で、学校のクラスの中で同じ誕生日の人が1組以上いる可能性は思ったより高いという話を聞いたことがあると思う。あるランダムに生成された値が衝突する確率という

    十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama
    mohno
    mohno 2017/11/30
    そこを心配してる人ってどれくらいいるんだろう、という気はするけどね。「衝突の可能性を心配するのは天が落ちてくるのを替わりに心配したほうがマシ」←いや、普通にバグが起きる可能性を心配しろとw
  • totoBIGの件は何が問題なのか、なるべく分かりやすく説明してみる: 不倒城

    目次・記事一覧(1) レトロゲーム(185) 日記(772) 雑文(512) 書籍・漫画関連(56) 子育て・子どもたち観察(115) ゲームブック(12) フォルクローレ・ケーナ・演奏関連(86) FF14(40) レトロでもないゲーム(336) 始めたばっか(13) アナログゲームいろいろ(37) 人狼(48) ネットの話やブログ論(61) 三国志大戦(20) 無謀的世評(52) ゴーストライター(16) 大航海時代ONLINE(40) FF3(6) Civ4(18)

    mohno
    mohno 2017/02/21
    まあ、シードが一致しただけだよな。ヘボいとは思うが、イカサマはうがちすぎ。毎回シード変えろとか言ってる人、シードの意味がわかってるんかな。それにしても、よく一致してることに気付いたなと思う。
  • 乱数にコクを出す方法について

    深津 貴之 / THE GUILD / note @fladdict アニメーションの監修で、「 Random();の代わりに、(Random()+Random()+Rrandom()+Random()+Random())/5.0f; を使うと、動きにコクが出る」と言ったら、ピュアオーディオ扱いされるのですが・・・これは根拠のあるアルゴです。 2016-11-03 11:29:43 深津 貴之 / THE GUILD / note @fladdict 乱数のコクをチューニングする話をすると、なぜピュアオーディオ扱いされるのか? みんな乱数の波動を、もっと体で感じようよ。全然ヴァイブレーションが違うよ。 2016-11-03 11:36:47

    乱数にコクを出す方法について
  • 数字のπをヴィジュアル化するとこんなにも美しい

    科学でありアートでもある、それが数学。 上のgif画像はChristian Ilies Vasileさんが制作した数字のπをヴィジュアル化したもの。美しすぎてため息が出ます。 ヴィジュアル化の方法は以下の通り。まず円を10等分して数字の0から9を割り振ります。πは3.14159…なので3から始めて1に線を引き、次に4へと線を引き、そこから5へと線を引き…という具合に続けていきます。しばらくすると下のような画像が出来上がります。 動画はこちら。 さらに2つの数字のペアが繰り返された回数を点のサイズで表したのがこちらの画像。点が大きければ大きいほど、そのペアの出現回数が多いことを示しています。 海外の大学では、数学専攻の学生が学位取得時に文学士号(Bachelor of Arts)か理学士号(Bachelor of Science)か選べる大学がありますが、こういうのを見ると納得ですね。 クリ

    数字のπをヴィジュアル化するとこんなにも美しい
    mohno
    mohno 2014/04/28
    散々突っ込まれているが、私も言いたい。「円周率関係ねー:-p」
  • すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog

    みなさん、こんにちは、今回は乱数の話です。 特に複数機種でのコンシューマ機でゲームを開発をしていると、機種間で乱数値を統一するために乱数生成アルゴリズムを自作しますよね。 そこでよく使われるアルゴリズムが「線形合同法」です、内容は至って簡単で、以下の漸化式を使います。 A,B,Mは定数で、どの値が入るかは処理系依存です。 例えばUnixなどの処理系ではA=1103515245,B=12345,M=2147483647などが入ります。 C言語ですと以下のようになります。 static unsigned int x=1; void srand(unsigned int s) { x=s; } unsigned int rand() { x=x*1103515245UL+12345UL; return x&2147483647UL; } この「線形合同法」は計算が簡単で高速ですから、いろいろな環

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog
  • 1