プログラムするときに覚えておきたい計算式

カテゴリ: コンピュータ / 公開日: 2013年6月08日(土曜)17:12 / 投稿者: Tom Goodsun

プログラムを書くときによくやるのに忘れてしまう!あの計算面倒くさい!またこれか!という計算をしなければならない時があると思う。
備忘録として、残しておきたい。

応用することも出来れば、応用することなくそのまま使うことが多いものもあると思う。

LIMITとOFFSETの計算(MySQL)

一覧のページャー処理の鉄則。
ページ番号と1ページあたりの表示件数からMySQLのLIMIT句に当てるオフセット値の計算をする。

オフセット値 = (ページ番号 - 1) * 1ページあたりの表示件数

SELECT * FROM テーブル名 LIMIT オフセット値, 1ページあたりの表示件数

総データ件数からページャーのページ数を求める

ページ数 = (総データ件数 / 1ページあたりの表示件数) + 1

端数分も必要なので+1。
街路樹問題と同じ。

対象年がうるう年かどうか判定する

対象年が400で割りきれる、または4で割り切れかつ100で割り切れないのうるう年だそうな。
対象年は西暦4桁表記。

if (対象年 % 400 == 0 || 対象年 % 4 == 0 && 対象年 % 100 != 0) {
    うるう年
} else {
    平年
}

ちなみに、うるう年では2月の日数が変わる。対象月の日数を求めるときは、2月だけうるう年のときは1を返すまたは加算すると良い。

var leap = 0;
var dayOfMonth = 0;
switch (対象月) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        dayOfMonth = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        dayOfMonth = 30;
        break;
    case 2:
        dayOfMonth = 28;
        if (対象年 % 400 == 0 || 対象年 % 4 == 0 && 対象年 % 100 != 0) {
            dayOfMonth += 1;
        }
        break;
}

乱数の生成

乱数の生成器には0.0以上1.0未満の乱数を生成するものがある。
整数を使う場合はこれを元に計算する。

(乱数生成器() * 十分に大きな値) % 必要な種類 + 最初の値

11~100の乱数を求める場合(90種類の乱数)

(乱数生成器() * 1000000) % 90 + 11