ちょっと脇道で
違うサイトを作ってみた。
二択で迷ったら 人生の岐路.com
http://jinseinokiro.com
優柔不断な方のために、プログラムが決めてあげますというw
さて、ランダムで選ぶということはPHPでは乱数値を生成するのが使えます。
2つの数字のうち、1が出たらA、2が出たらBという感じ。
そうするとmt_rand関数を使用して以下のイメージ
$answer = mt_rand(1,2);
ところが上記だと1しか出ない気がした・・
なぜ??
1~2の間だと狭すぎて偏るの・・!?
ということで試しに
mt_rand(1,20)にすると
きちんと1から20までの間の数字がランダムで選ばれる。
なので
$answer = mt_rand(1,20);
にしてしまい、
選ばれた数字が偶数ならA、奇数ならBというように方向転換。
if($answer % 2 == 0) {
$answer=$_POST[‘answer_a’];
} else {
$answer=$_POST[‘answer_b’];
}
偶数か奇数かは2で割った余りにて判定。「%」ですね。
これでユーザーが入力した2つのPOSTのうちどちらかを出してあげられます。
■■■■■■2013.05追記■■■■■■■■
改めて、
mt_rand(1,2);だと本当に偏るのか実験したところ
上記のmt_rand(1,20)と結果はほぼ同じでした・・
すみません。
↓100回繰り返したプログラム
・1~2バージョン
$count = 1;
$answer100 = array();
while ($count <= 100) {
$answer = mt_rand(1, 2);
$answer100[] = $answer;
$count++;
}
print_r(array_count_values($answer100));
・1~20バージョン
$count = 1;
$answer100 = array();
while ($count <= 100) {
$answer = mt_rand(1, 20);
if($ans_key % 2 == 0) {
$ans_flg =1;
} else {
$ans_flg =2;
}
$answer100[] = $ans_flg;
$count++;
}
print_r(array_count_values($answer100));
↓↓
100回ずつ出力を何回か行い、1と2の数を数えた結果は
だいたい50:50前後~偏った場合で39:61 でした。
両方とも。
追記終わり
■■■■■■■■■■■■■■■■■■■■
今作っているフォームでは入力チェックをPHPで、POST送信後にやっていたのですが、
どうしてもカウントダウンが実装したく、w
Javascriptでチェックに挑戦。
やってみて思ったのがJS使えるのは超大事かも・・
すべてバックのプログラム側でやってしまうより
フロント側でできてしまうのはそうしたほうがユーザーにやさしい場合がある。
入力しないと次へボタンを押せないとかね。
あと、シンプルサイトだからスマホ対応もざっくりしてまえと、
スマホの場合は別のCSSを読むようにしました。
CSSファイルを読むところ自体を出し分け。
<?php
$ua = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
if((stripos($ua,’iPhone’) !== false)or(stripos($ua,’Android’) !== false)or(stripos($ua,’DoCoMo’) !== false)or(stripos($ua,’J-PHONE’) !== false)or(stripos($ua,’Vodafone’) !== false)or(stripos($ua,’SoftBank’) !== false)or(stripos($ua,’KDDI’) !== false)) {
print <<
end;
}
else
{
print <<
end;
}
?>
ユーザーエージェントの種類はもっとあるかもです。
JSももうちょっと勉強してみよう。—–
コメント