タグ

randomに関するmanabouのブックマーク (29)

  • 鍵生成には暗号論的に安全な乱数を使おう

    SSHの鍵生成には暗号論的に安全な疑似乱数を使おうという話。 暗号論的に安全ではない疑似乱数がどれだけ危険かというのを、簡単なCTFを解くことで検証してみました。 背景 SSH公開鍵に自分の好きな文字列を入れる、という記事を読みました。 かっこいいSSH鍵が欲しい 例えばこのSSH公開鍵、末尾に私の名前(akiym)が入っています。 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFC90x6FIu8iKzJzvGOYOn2WIrCPTbUYOE+eGi/akiym そんなかっこいいssh鍵が欲しいと思いませんか? かっこいい!真似してみたい! そこまではいいんですが、問題は実装です。 秘密鍵を生成する際の乱数生成には高速化のために Goのmath/randを使っていますが、乱数が用いられるのは公開しない秘密鍵自体であり、このアルゴリズム自体はLagged Fib

  • Dynamic linker tricks: Using LD_PRELOAD to cheat, inject features and investigate programs

    Dynamic linker tricks: Using LD_PRELOAD to cheat, inject features and investigate programs April 2, 2013 — Rafał Cieślak This post assumes some basic C skills. Linux puts you in full control. This is not always seen from everyone’s perspective, but a power user loves to be in control. I’m going to show you a basic trick that lets you heavily influence the behavior of most applications, which is no

    Dynamic linker tricks: Using LD_PRELOAD to cheat, inject features and investigate programs
  • ダミーデータ作成のお供に! VS Code 拡張機能「vscode-random」で人名やカラーコードなどを自動生成してもらおう! | DevelopersIO

    はじめに ダミーデータを作成しなければならないときってありますよね? テストデータやサンプル画面を作るときに値をどうするか困ったことありませんか? そういった悩みを VS Code で解決するための拡張機能vscode-random です。 https://marketplace.visualstudio.com/items?itemName=jrebocho.vscode-random デモ (GitHub リポジトリより引用) 拡張機能としてはカーソル位置にランダムな値を挿入するという単純なものなのですが、VS Code のマルチカーソル機能と組み合わせることで非常に強力な体験を得ることができます。 名前やメールアドレスの項目がある JSON や YAML に対し、複数の項目にまとめて値を挿入して作り上げるのは気持ちいいこと間違いなし! 対応コマンド コマンド 説明 生成例

    ダミーデータ作成のお供に! VS Code 拡張機能「vscode-random」で人名やカラーコードなどを自動生成してもらおう! | DevelopersIO
  • 「Randomly Failing Specs」という内容でLTしました #railsdm - アジャイルSEの憂鬱

    資料は Slide Share で公開しています。 Randomly Failing Specs from sinsoku listy www.slideshare.net 話したかったこと 時間切れで全く話せていませんでしたが、当は「 sleep 使わずに直しましょう」って事が伝えたかった。 資料の作り方や発表内容で完全に失敗してる。 このブログ読んだ方は是非スライドの図を見て、 Capybara のお気持ちを感じ取って欲しい。 他のLT登壇者はだいたい最後の方まで話せていて、流石だなーと思いながら聞いていました。 同人誌 電子版を BOOTH で公開してみました。*1 booth.pm 紙版を購入頂いた方には無料で電子版をお渡ししたいと思っていたので、パスワード付zipを使って用意しました。 パスワードを生成するのが面倒なのですが、他に良い方法が思い浮かびませんでした。申し訳ない。

    「Randomly Failing Specs」という内容でLTしました #railsdm - アジャイルSEの憂鬱
  • 意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて|Rui Ueyama

    プログラムを書いていると、素直に実装した結果として毎回特定の条件が満たされているけど、来それは誰も保証してないという場面に出くわすことがよくある。保証されていない偶然の動作に依存することで生じるバグというのはかなり多い。 例えば最近では、ドラゴンボールZ ドッカンバトルというゲームで、2回SQL文を実行した結果が同じ順序で並んでいるという誤った期待をしているコードがあったせいで、ガチャの確率表示がめちゃくちゃになってしまって、運営が確率操作しているのではないかという騒動が発生したことがあった [1]。データベースでは空のテーブルにデータを追加してその直後に読み返すと、データを追加した順番に結果が返ってきたりしがちなので、問題のコードはきれいなテスト環境では偶然うまく動いてしまったのだろうと思う。 上のようなバグを防ぐために最近よく使われているのは、来保証しないところをわざと壊すという方

    意図的にプログラムの動きをランダムにしてバグを早期発見するテクニックについて|Rui Ueyama
  • SFC版風来のシレンの乱数生成アルゴリズムの話 解析編 - Qiita

    SFC版風来のシレンの乱数について 私はローグライクゲーム好きなのでローグライク系ゲームの動画をニコニコ動画等でたまに見たりします。中でも、SFC版の初代風来のシレンはもう20年以上も前のゲームですが、完成されたゲームシステムと絶妙なゲームバランスにより、今なお根強い人気があります。 さて、そのSFC版風来のシレンの動画を見ていると、たまにゲーム上で「連続して攻撃を外す」「同じアイテムばかり出る」といった偏った現象が発生した時に「シレンの乱数は偏りやすい」といったようなコメントがよく書き込まれています。 人間の感覚というのものは偏った現象に気づきやすいものであり、この手の意見は大抵誤っている(特に最近ではソシャゲのガチャが操作されている!などとすぐに言われますね)のですが、風来のシレンはSFC時代のゲームという事もあり実際に質の悪い乱数生成ルーチンになっている可能性もあります。 そこで気に

    SFC版風来のシレンの乱数生成アルゴリズムの話 解析編 - Qiita
  • SFC版風来のシレンの乱数生成アルゴリズムの話 考察編 - Qiita

    この記事は続編です。 前回の記事で、SFC版風来のシレンのROMデータの解析内容を元に乱数がどのようにして生成されているかを解説しています。そちらを読んでからこの記事を読んでいただくと、より内容を理解しやすいかと思います。 前回の記事:SFC版風来のシレンの乱数生成アルゴリズムの話 解析編 SFC版風来のシレンの乱数の品質を調べる さて前回の記事でSFC版風来のシレンの乱数生成アルゴリズムが線形帰還シフトレジスタの一種であることが分かりました。 しかし乱数生成アルゴリズムは理解したものの、それによって生成された乱数が妥当な物なのかというのはアルゴリズムを見ただけでは分かりません。 シレンの乱数は偏りやすいと断言できるような目に見えて質が悪いものなのでしょうか。 この項でそれを考察してみたいと思います。 先にお断りしておきますが、気で定量的・客観的に乱数の品質を検証しようと思うと格的な統

    SFC版風来のシレンの乱数生成アルゴリズムの話 考察編 - Qiita
  • 十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama

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

    十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama
  • Java で最速の乱数生成器を目指す: (3) ガンマ分布に従う乱数

    TL;DR: ガンマ分布に従う乱数生成器を Java で実装し、Commons Math の実装と比較して 最大で約 16 倍 (任意の形状パラメータの乱数を生成する場合) の速度効率を達成しましたよ、というお話です。 (Header image: Mundhenk at en.wikipedia) ガンマ分布に従う乱数生成の実装方法 これまで 正規分布に従う乱数生成、指数分布に従う乱数生成 をそれぞれ Java で実装してきましたが、今回はガンマ分布に従う乱数生成を Java で実装してみます。 ガンマ分布 は、形状パラメータ $k > 0$ と スケールパラメータ $\theta > 0$ (もしくは形状パラメータ $\alpha = k$ と比率パラメータ $\beta = 1 / \theta$) の 2 つのパラメータを持ち、その確率密度関数は次の式で表されます。 \[f(x)

    Java で最速の乱数生成器を目指す: (3) ガンマ分布に従う乱数
  • UUID(v4) がぶつかる可能性を考えなくていい理由 - Qiita

    お手軽にランダムなIDを取得したい時にUUIDはとても重宝します。 でもたまに、 「このID(UUID)ってぶつかることない?対策しなくて大丈夫?」 と聞かれることがあります。 それに対して、 「ウィキペディア先生がぶつからねえって言ってたから大丈夫だよ!(#゚Д゚)」 で切り抜けるのもそろそろ限界のような気がするのでちゃんと調べました。 (もちろんウィキペディア先生を頼りました!) 2つの理論 UUIDの衝突確率について考える上で次の2つの理論が重要になります。 鳩の巣原理 誕生日のパラドクス 鳩の巣原理 鳩の巣原理とは、 m個の入れ物にn個のものを入れるとき、n > m ならば少なくとも1個の箱には2個以上のものが入る 9個の巣箱に10羽の鳩が入る場合、必ずどれかの巣箱には2羽以上入ることになるということです!(ウィキペディア先生) 考えれば当たり前のことですが同様にして考えれば、 「

    UUID(v4) がぶつかる可能性を考えなくていい理由 - Qiita
  • インタラクティブ・プログラミング勉強会 第1回 乱数 | fladdict

    巷では、スマホは「手触り」が重要・・・って話が持ち上がりつつあるが、使い易さと気持ちよさを両方できる人材が不足している。広告Flash業界で培われたインタラクションのノウハウは、だんだんと失伝しつつあり、ビジュアルや動きをちゃんとコーディングできるスマホ系の人材なかなかいない。新しく勉強するパスもほとんどない。 そんなわけでTHE GUILDの社員研修として勉強会をすることに。目標は1年ぐらいでこの程度のモリモリ動くものを作れるようにすること。で、2年目に動きや手触りに、合理性や必然性、使い易さを付加できるとこまでもっていく。 第1回はインタラクティブの根幹となる乱数について。 1: 乱数とは ランダムな値を返す関数、機能。 乱数はインタラクティブ・プログラミングの根源。静的な絵とは根に異なる、永遠に定着しない絵を作り出す。 インタラクティブなプログラミングでは、知識以上にその応用力が問

    インタラクティブ・プログラミング勉強会 第1回 乱数 | fladdict
  • 乱数にコクを出す方法について

    深津 貴之 / 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

    乱数にコクを出す方法について
  • PHPのmt_rand()にプルリクを送った - kusano_k’s blog

    この話。 PHP の mt_rand() は一貫して壊れている(consistently broken)らしい - 唯物是真 @Scaled_Wurm PHPのmt_rand()が実装にミスがあることを知ったので、「PHPのコミットログに名前を載せるぞ╭( ・ㅂ・)و」と思ってプルリクを送ったら、一旦マージされたけど、リバートされた。 詳細 https://github.com/php/php-src/pull/1681/files ついでにテストコードも付けたけど、直すべきは1文字だけ。 twistというマクロの定義が1文字間違えている。 loBit(u)ではなくloBit(v)が正しい。 #define twist(m,u,v) (m ^ (mixBits(u,v)>>1) ^ ((uint32_t)(-(int32_t)(loBit(u))) & 0x9908b0dfU)) このマク

    PHPのmt_rand()にプルリクを送った - kusano_k’s blog
  • 乱数のたのしい話と遺伝アルゴリズム - きしだのHatena

    金曜日の「プログラマのための数学勉強会@福岡」で乱数の話をしてきました。 プログラマのための数学勉強会@福岡 #3 - connpass で、乱数の生成だとか、クイックソートや素数判定などの乱択アルゴリズムの話とかをしました。 乱数タノシイヨ 乱数のたのしい話 from なおき きしだ その中で、遺伝アルゴリズムで巡回セールスマン問題(TSP)を解くというのをやってみました。遺伝アルゴリズム、すいぶん昔から名前は知ってて、どういうアルゴリズムかも知ってて、実装もそんな難しくないと知りつつ、書く機会がありませんでした。なので、この機会に書いてみようと。 とりあえず最初に完全にランダムでTSPを解いてみます。 TSP with random ぐちゃぐちゃですね。 下部のグラフはその時点での最短距離。最初に距離が短いものをみつけていくけどだんだんみつかりにくくなる、という感じになっています。 1

    乱数のたのしい話と遺伝アルゴリズム - きしだのHatena
  • プレイヤーが自然に感じる乱数の作り方 - A Successful Failure

    2015年11月10日 プレイヤーが自然に感じる乱数の作り方 Tweet ゲームでは擬似乱数がよく使われるが、ある種のゲーム数学的に精度の高い擬似乱数(たとえばMT)を用いているにも関わらず、コンピュータが有利になるように乱数を操作していると批判に晒されている。 実際、数学的に正しい乱数と、プレイヤーが自然と感じる乱数には、ある種の差が存在する。北陸科学技術大学院大学の池田研究室では、プレイヤーに自然に感じる乱数の生成に関する研究を行っている。 プレイヤーが不自然に感じる理由 数学的に正しい乱数に対してプレイヤーが不自然に感じる理由としては認知バイアスが考えられる。特に事象に関連する認知バイアスとして、次が挙げられている[1]。 確証バイアス: 人は自分のもつ仮説に一致する情報を求め、反証となる証拠を避ける傾向がある。ひとたび、サイコロが操作されていると感じると、それ以降、その仮説に都

    プレイヤーが自然に感じる乱数の作り方 - A Successful Failure
  • 乱数の性質とセッショントークンの作成 - $shibayu36->blog;

    ユーザアカウントのログイン機能とか作ってると、何らかの形でセッション用のトークンを作成する機会がある。今まではこれは適当にランダムな値を利用していればいいんでしょと思っていたのだけど、ちょっと違ったのでメモ。 乱数の性質 http://akademeia.info/index.php?%CD%F0%BF%F4によると、乱数には三つの性質がある。 無作為性:統計的な偏りがなく、でたらめな数列になっているという性質。 予測不可能性:過去の数列から次の数を予測できないという性質。 再現不可能性:同じ数列を再現できないという性質。再現するためには、数列そのものを保存しておくしかない。 この時、少なくとも無作為性のみ満たされていると弱い擬似乱数、無作為性と予測不可能性が満たされていると強い擬似乱数、全てが満たされていれば真の乱数と呼ばれる。ソフトウェアだけでは、真の乱数を作ることができず、真の乱数に

    乱数の性質とセッショントークンの作成 - $shibayu36->blog;
  • 配列を重複なく乱数で埋めるには - Qiita

    配列を重複なく乱数で埋める方法を考えていきます。なんで唐突にそんな話が始まったかというと C#もしくはCで以下のプログラムを書いて欲しいです。【内容】... - Yahoo!知恵袋 に回答しようと思ったからです。C#なんて知らんし、いまどきCで書く人なんて居ないでしょ。 というわけでC++11の範囲で書いていきます。・・・はいそこ、今時C++11なんていう太古の規格で書くなとか言わない。 とりあえずint型のvectorを作っていますが、他のにするのもさして大変ではないですね。 下の3つのほかにさらに3つの方法が C++で効率よく重複のない乱数列を生成する で提示されており、そっちの方が速いです。 まずは結論 これ使えばいいんじゃね。 #pragma once #include <random> #include <vector> #include <iostream> #include

    配列を重複なく乱数で埋めるには - Qiita
  • SATをサッと解く 〜乱択アルゴリズムで遊んだ話〜 - kivantium活動日記

    ミレニアム問題と呼ばれる数学の7つの難問がある。各分野で重要かつ難しい問題が選ばれており、解決するとクレイ研究所から100万ドルの賞金を得ることができるということで有名だ。そのうちの1つポアンカレ予想は解決済みだが、残りの6つは未解決である。その中でもコンピュータ科学で非常に重要な問題が「P≠NP予想」である P≠NP予想とは コンピュータで問題を解決するときには一定の手続き(アルゴリズム)に従って問題を処理することになる。例えば数の集合の中からある特定の数字を見つけるという問題を考える。一番単純な解決方法は集合の要素を1つずつ調べていって値が求めたい数字になっているかどうかチェックすることだろう。この場合、集合がN個の数字からなるとすればおおよそNに比例する時間で求めたい数字の検索が終わることが予想できる。このようにだいたいNに比例する時間で終わるようなアルゴリズムについて、計算時間のオ

    SATをサッと解く 〜乱択アルゴリズムで遊んだ話〜 - kivantium活動日記
  • 配列シャッフルFisher-Yatesを覚え間違えていた件 - クジラ机ブログ

    ここしばらく、月刊で「日経ソフトウェア」へHTML5に関する連載をさせていただいています。毎回、HTML5のAPIや、ゲームのアルゴリズムを紹介していたのですが、先日、Twitterで読者の方から、どや顔で紹介した、Fisher-Yatesアルゴリズムが間違っているとのご指摘を受けました。ちなみに、Fisher-Yates法とは、配列をシャッフルする際に用いるアルゴリズムで、非常に少ない手順でよりランダムに並び変えることができます。 それで、改めて調べてみると・・・私が書いた方法では、シャッフルの精度が下がってしまうことが分かりました。お恥ずかしい話です。 私が間違えて書いたコード: // カードを定義 var cards = []; for (var i = 0; i < 52; i++) { cards[i] = i; } // Fisher-Yatesアルゴリズムでシャッフル

    配列シャッフルFisher-Yatesを覚え間違えていた件 - クジラ机ブログ
  • せっき~のゲーム屋さん ドルアーガの塔 乱数の工夫の正体

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 CEDECの講演 「ゲーム世界を動かすサイコロの正体 ~ 往年のナムコタイトルから学ぶ乱数の進化と応用」 より、 乱数を使った ドルアーガの塔の 迷路生成のアリゴリズムについて紹介です。 講演内容は、こちらです http://sekigames.gg-blog.com/Entry/288/ 講演者の方も、 「ナムコの乱数を取り上げるなら、ドルアーガの塔をせざるえない」 という程、外せない内容との事です 「このテーマだけで講演時間を全て使っても説明しきれない」 (講演では、時間の関係で 触りのみでしたので ある程度、せっき~の解釈で補完しています) -------------------------------------------------------------------