昔一時期流行った脳内メーカー。名前を入力するとなんかしらの判定結果を返してくれるというもの。最近またtwitter上で似たようなものが流行っています。で、今回はその脳内メーカーのようなナントカメーカー(ジェネレーター)を作ってみようと思います。
内容
第1回目ということで、内容はシンプルに、ユーザーが名前を入力すると、名前によって変わらない0〜100の数値を表示するプログラムをPHPで作ろうと思います。
手順
- ユーザーが入力した名前を取得
- 文字列(名前)から固定の数値を得る
- 取得した数値を0〜100の数値にする
- 表示
以上
文字列からどうやって固定の数値を得るか?
crc32()関数を使います。
crc32()関数とは、引数の文字列から32ビット長のCRCチェックサムを生成します。はい、まぁ、よくわかりませんが、とりあえずこれで、文字列から固定の数値を得ることができます。
取得した数値を0〜100の値にする
まず、crc32()関数で取得した数値は負の整数になるので、abs()関数を使い数値を絶対値にします。
次に、数値 ÷ 101 の余りで0〜100の数値を出すことができるます。
だいたいのプログラミング言語だと、%という演算子で余りを求められると思います。
例(PHP)
$number = 123456 % 101; // これで$numberには123456を101で割った余りの56が代入されます。
PHPのソースコード
$name = "せいけん"; //$_GET["name"]とかで、GETパラメータから値を取得してもよし。 $number = crc32($name); $number = abs($number); $number = $number % 101; echo $name . "さんの○○度は" . $number . "%です。";
実行結果
せいけんさんの○○度は82%です。
で、実際に作りました!
ナントカ度メーカー
なにについて判定するかと、名前を入力すると、0〜100のパーセンテージを表示しています。サンプルコードよりもちょっと応用して、名前となにについて判定するかの文字列から取得した数値を足し合わすことで、別のものについて判定するとき違った数値を出しています。