プログラムがランダムで選ぶ

PHP

ちょっと脇道で
違うサイトを作ってみた。

二択で迷ったら 人生の岐路.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 <<<link rel=”stylesheet” href=”smartphone.css” media=”all” />
end;

}
else
{

print <<<link rel=”stylesheet” href=”pc.css” media=”all” />
end;

}
?>

ユーザーエージェントの種類はもっとあるかもです。

JSももうちょっと勉強してみよう。—–

コメント

タイトルとURLをコピーしました