タグ

数学に関するpaselaのブックマーク (6)

  • 中学生でもわかるベジェ曲線

    ベジェ曲線をレンダリングしていたら面白くて丁寧に描いてしまった。せっかくなのでこれを使って誰にでもわかるように(たぶん中学生でも分かるように)ベジェ曲線というものが何かを説明してみたいと思う。 ベジェ曲線というのはなめらかな曲線を描くためのものなのだけど、説明はまず単なる直線から始めることになる。この下の図の点の動きがすべての基になるからだ。 一の直線があって、その上を点Mが一定の速度で移動している。この点Mの軌跡は、もちろんだけど、単なる直線になる。いいよね。tというのは線分上をどれだけの割合進んだのかを表す数値だ。 もうひとつ線を増やして、その上に、Mと同じように移動する点をもうひとつ増やすことができる。もともとの点MをM0、新しい点をM1と呼ぶことにしよう。M0とM1が動くルールは同じままだ。M1が増えても特にややこしくなっていることはないね。 さて、ここでM0とM1をつなぐ線を

    中学生でもわかるベジェ曲線
  • RSA鍵の生成時に確率的素数判定法を使って問題ないのか - hnwの日記

    前回記事「RSA公開鍵から素数の積を取り出す方法」でも紹介しましたが、RSA鍵の生成には巨大な2つの素数p,qが必要です。近年一般的に使われている2048bit RSA鍵の場合、p,qの大きさは1024bit、10進で約308桁の数になります。 このRSAのアルゴリズム中ではpとqを法としたフェルマーの小定理(正確にはその拡張であるオイラーの定理)を利用しています。つまり、pとqが合成数だとRSA暗号の大前提が狂ってしまいますので、pとqには確実に素数を選ぶ必要があります。 ところで、OpenSSLのRSA鍵生成の実装では、pとqの素数判定にMiller-Rabin素数判定法が用いられています。Miller-Rabin素数判定法は片側誤りの確率的アルゴリズムで、「たぶん素数」「確実に合成数」の判定ができるようなものです。pとqの素数性が重要なのに、その判定に確率的アルゴリズムを使っても問題

    RSA鍵の生成時に確率的素数判定法を使って問題ないのか - hnwの日記
  • Perlで順列組合せの問題を解く

    (1) 青・赤・黄・緑の4色のボールがあります。これを順番に並べる方法はいくつありますか? (2) この中から2色選んで順番に並べる方法はいくつありますか? (3) この中から2色選んで順番を考えずに組合せを作る方法はいくつありますか? こういう問題を学生の頃やらされました。nCrなどを見るとイライラするという方も多いでしょう。 最近こういう問題を解くはめになり、Perlでプログラムを書き計算する方法を調べてみました。もちろん数学の公式をネットで調べて当てはめてもいいのですが、既存のモジュールを使わない手はありません。 Math::Countingを使うMath::Countingがこういうときはぴったり。 #!/usr/bin/env perl use strict; use warnings; use Math::Counting; # (1) 4色のボールを順番に並べる(4P4) p

  • 何故私は計算が小学校で一番速かったのか? - やねうらおブログ(移転しました)

    小学校のころ、私は四則演算が学校で一番速く出来た。そんな私だが、実は九九はほとんど覚えていなかった。 掛け算や割り算を速く行なうのに必要なのは九九じゃないことを私は知っていたからだ。 簡単な例を出そう。あなたは、40÷6をどうやって計算するだろうか? 九九を持ち出してきて、「6×8 = 48 あれ、大きすぎたか。6×7 = 42、ありゃ、まだ大きいか。6×6 = 36。おお、40より小さくなった。40-36 = 4だから、6余り4が答え!」なんてやらないだろうか。これは凄く無駄な作業だ。どう考えてもやり方がおかしい。 ここで必要なのは、九九ではなく、36〜41は、6で割ったら商は6という知識である。「余り」もセットにして覚えてあるとなお良い。 「÷6」をするとき、割られる数が60以上であることは考えなくて良い。また、もう少し一般化して言えば、「÷N」するときは、割られる数がN*10以上であ

    何故私は計算が小学校で一番速かったのか? - やねうらおブログ(移転しました)
  • FF(16進数の掛け算)を覚えよう - やねうらおブログ(移転しました)

    最近、あるプログラマと話していて気づいたのだけど、彼は16進数の2桁と1桁との掛け算(FDh×5とか)が出来ない。やり方自体を知らないのだ。彼はWindowsの電卓を立ち上げて計算していた。 そのときは「プログラマでなくともこんなこと知ってて当然だろ!」と思ったのだけど、その後、10人ぐらいのプログラマに出来るかどうか聞いてみたが誰も出来ない。 結局、「普通は出来ない」のだと私は理解した。しかし16進数の掛け算はそんなに難しくない。私が子供のころには、まわりにFF(1×1=1に始まって、F×F=E1まで)を丸暗記している人がいっぱいいた。情報教育の一環として中学か高校で教えても計算の仕方ぐらい教えればいいのになぁと思っている。 前置きが長くなったが、以下にやり方などを書いておく。 ■ 16進数に馴染もう 16進数では、A = 10 , B = 11 , C = 12 , D = 13 ,

    FF(16進数の掛け算)を覚えよう - やねうらおブログ(移転しました)
  • 遠藤諭の東京カレー日記: インドの2桁九九とは別次元のロシアかけ算

    『月刊ascii』の連載「それは順序が逆だろう/Every thing is a system」で、表題の事柄についてここで触れると書いた。インドの算術のアレコレは、単行まで出ているが、ロシアのかけ算についてである。 ※写真は、飯田橋の「クラウンエース」のカツカレー。ときどき無性にこの手のカウンター式のカレー専門店に入りたくなる。ここの特長はなんといっても安い。カツカレーが480円。隣の常連らしい客がご飯の上にシソの実を敷き詰めていたのでちょっとだけ真似してみた。CoCo壱番屋より好き。 さて、ロシアのかけ算についてだが、1度、『月刊アスキー』に連載していた「近代プログラマの夕3」(Act.43/1999年12月号)で書いたことがある。科学雑誌などで、「ロシアのかけ算」(Russian multiplication)または、「ロシアの農民のかけ算」(Russian Peasant M

  • 1