プログラムするときに覚えておきたい計算式
プログラムを書くときによくやるのに忘れてしまう!あの計算面倒くさい!またこれか!という計算をしなければならない時があると思う。
備忘録として、残しておきたい。
応用することも出来れば、応用することなくそのまま使うことが多いものもあると思う。
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