タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

algorithmとmathに関するcrafのブックマーク (7)

  • 確率的プログラミング | POSTD

    この数年で、プログラミング言語(PL)や機械学習のコミュニティは 確率的プログラミング(PP) を用いて、それぞれに共通する研究の関心事を明らかにしてきました。その概念は、抽象化のような強力なPLのコンセプトを”エクスポート”し、現状では複雑で困難な作業である統計的モデリングに再利用することができるかもしれない、というところにあります。 (講義ノートの 最新版 を閲覧したい方は、リンクをクリックしてください。ソースは GitHub に投稿してあります。誤りを発見した場合は、Pull Requestを送信してください。) 1. 何、そしてなぜ 1.1. 確率的プログラミングは○○○ではない 直観に反して、確率的プログラミングとは確率的に振る舞うソフトウェアを書くことでは ありません。 例えば、暗号のキー・ジェネレータやOSカーネルでの ASLR の実装、または回路設計のための 焼きなまし法

    確率的プログラミング | POSTD
  • 画像処理の数式を見て石になった時のための、金の針 - Qiita

    $k$は定数で、だいたい0.04~0.06くらいです。Rの値によって以下のように分類できます。 Rが大きい: corner Rが小さい: flat R < 0: edge 図にすると、以下のようになります。 CSE/EE486 Computer Vision I, Lecture 06, Corner Detection, p22 これで手早くcornerを検出できるようになりました。ここで、corner検出についてまとめておきます。 cornerは複数のedgeが集まる箇所と定義できる 変化量をまとめた行列の固有ベクトルからedgeの向き、固有値の大きさから変化量の大きさ(edgeらしさ)がわかる 2つの固有値の値を基に、edge、corner、flatを判定できる 固有値の計算は手間であるため、判定式を利用し計算を簡略化する なお、Harrisはedgeの向きである固有ベクトルを考慮す

    画像処理の数式を見て石になった時のための、金の針 - Qiita
  • Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理

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

    Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理
  • 数値の先頭に0を追加して桁をあわせる - うなの日記

    数値の先頭に0を追加して桁をあわせる関数を書きました。 /** * 必要な桁数まで0を埋める。 * @param number 数値 * @param size 桁数 */ function fillZero( number, size ) { var s = Math.log( number ) * Math.LOG10E; for( i=1,n=size-s,str="";i<n;i++ ) str += "0"; return str+number; } サンプルは以下。 var out = document.getElementById("out"); out.innerHTML += "3, 1 : " + fillZero( 3, 1 ) + "<br/>"; out.innerHTML += "3, 2 : " + fillZero( 3, 2 ) + "<br/>"; ou

    数値の先頭に0を追加して桁をあわせる - うなの日記
  • 対数を使った数値の0詰め処理について解説してみた - Seasons.NET

    JavaScriptでsprintfのフォーマット書式みたいに桁数に満たない数字の場合、 左0詰めをしてほしいのですが、それがないっぽいので調べていたところ。 こちらの記事にその式が掲載されており、 対数に対する知識が少し乏しかったので 学習がてらキモになるところ調べてみました。 ポイントとなるのは、 Math.log(x) * Math.LOG10E だと思います。これがなぜいきなり出てきているか?を解説してみます。 あとの計算は非常に簡単なので解説を割愛します。 まず数字の桁数を求める前に, 10 = 10 = pow(10,1) 100 = 10x10 = pow(10,2) 1000 = 10x10x10 = pow(10,3) と表すことができるのはわかりますよね。 powの第2引数は、指数を示しているわけですが、 この数に+1した数が桁数になっていますよね。 この指数(x)にあ

    対数を使った数値の0詰め処理について解説してみた - Seasons.NET
  • 計算のきまり - d.y.d.

    00:41 11/08/04 計算のきまり ( )を使った式の計算には次のようなきまりがあります。 (□ + ○) × △ = □ × △ + ○ × △ (□ - ○) × △ = □ × △ - ○ × △ ... たし算とかけ算には、次のようなきまりがあります。 □ + ○ = ○ + □ (□ + ○) + △ = □ + (○ + △) □ × ○ = ○ × □ (□ × ○) × △ = □ × (○ × △) この考えを使って、くふうして暗算で計算しよう。 小学校算数 5学年 - Wikibooks 分配法則・交換法則・結合法則。 とても当たり前で、当たり前すぎて、ほとんどの人は、もう特に意識することもない法則かもしれません。 でも、プログラミングを知っている僕らは、立ち止まってこの法則の価値に触れることができる。 末尾再帰化 最近のコンパイラは、こんな最適化をします。 i

  • 階乗を求める - d.y.d.

    22:56 10/09/04 階乗を求める 去年聞いた中で、私が一番感動した式の話。 k! = limn→∞ nk / nCk kの階乗は、「nのk乗 ÷ n個のものからk個選ぶ組み合わせの数」という式で n を無限に大きくしていったときの収束先、である。 特に難しい証明が要るとかではなくて、nCk = n(n-1)(n-2)...(n-k+1) / k! であることを使うと、 limn→∞ nk / nCk = limn→∞ nk k! / n(n-1)(n-2)...(n-k+1) で、n が k に比べて十分大きければ n も n-k+1 もほとんど同じ値なので、 分子も分母もだいたい n を k 個かけているわけでして、 その部分が相殺して、k! が残るという寸法。 (厳密な表現ではないので、気になる人は厳密に証明してください。) 実装 と、この式自体はそんなに不思議ではないのです

    craf
    craf 2010/09/07
    " // " がコメントに見えてしまうC++脳のおかげでだいぶ悩んだ。
  • 1