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