最初の表示は前章と全く同じです。
「占う」ボタンを押すと・・・
グラフィックス付きでおみくじの結果が出ます。また、前章では それぞれの結果(大吉、吉、小吉、凶、大凶)の出る確率は同程度でした。 今回は、「大吉」「大凶」の出る確率を約1/20、「凶」「吉」の出る確率を1/10、 残りを「小吉」というように重みを付けてみました。
では、呼び出し側のHTMLを見てみましょう(index.html)。
<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>おみくじ</TITLE> </HEAD> <BODY> <CENTER> 下のボタンを押すと本日の運勢を占うことができます <FORM METHOD="GET" ACTION="kuji02.cgi"> <INPUT TYPE="SUBMIT" VALUE="占う"> </FORM> </CENTER> </BODY> </HTML>CGIの名前がkuji02.cgiになったので、ここだけが前章と異なります。
次にくじの結果を表す適当な画像を用意しておきます。
画像 | ファイル名 |
---|---|
daikichi.gif | |
kichi.gif | |
shoukichi.gif | |
kyo.gif | |
daikyo.gif |
では、プログラムを見てみましょう。
// kuji02.c #include <stdio.h> #include <time.h> #include <stdlib.h> int main() { char kuji[5][8] = {"大吉", "吉", "小吉", "凶", "大凶"}; char gif[5][32] = {"daikichi.gif", "kichi.gif", "shoukichi.gif", "kyo.gif", "daikyo.gif"}; int ku, no; srand((unsigned int)time(NULL)); printf("Content-Type:text/html\n\n"); printf("<HTML>\n<HEAD>\n<TITLE>おみくじ</TITLE>\n</HEAD>\n<BODY>"); no = rand() % 100; if (no < 5) ku = 0; else if (no >= 5 && no < 15) ku = 1; else if (no >= 15 && no < 85) ku = 2; else if (no >= 85 && no < 95) ku = 3; else ku = 4; printf("<CENTER>\n"); printf("<FONT SIZE=\"5\">"); printf("<IMG SRC=\"%s\"><P>", gif[ku]); printf("あなたの運勢は%sです", kuji[ku]); printf("</FONT>\n"); printf("<P><A HREF=\"index.html\">Back</A></P>"); printf("</CENTER>\n"); printf("</BODY>\n<HTML>\n"); return 0; }no = rand() % 100;
でnoには0から99までのいずれかの整数が代入されます。
これが5以下となる確率は1/20です。
同様に5以上15未満となる確率は1/10です。
このように、出る確率に重みを付けておきます。
従ってkuが0となる確率は1/20, 1となる確率は1/10, 2となる確率は7/10, 3となる確率は1/10, 4となる確率は1/20になります。
kuが0となれば、「大吉」で表示される画像は daikichi.gifとなります。
今回も簡単でした。
Update Jan/19/2003 By Y.Kumei