人工無脳ユウヤ - 30日目(ランダムで同じ数字ばかり出る件)
一か月が立ちました。ユウヤ君がはてなハイク市民に…
さて、今の問題はランダム数値です。
ランダム数値を設定しても奇跡が起きて同じ発言しかしない…とか。テストだと6回に1回ぐらいなんだけどなぁ…
ちなみにランダムはこんな感じでやってます。
echo $word[rand(0,count($word)-1)];
しかし20個要素があるのに二回連続同じことを言ったりするので侮れない…
うーん、かといってこんな情報を保存するのも面倒だしなぁ…
なんかいい方法ないかなー…
追記ー
ランダム検証
$rnd = ""; for($i=0;$i<20;$i++){ $rnd .= rand(1,20)."、"; }
結果。
一回目 15、6、3、18、9、19、1、18、18、19、7、15、15、2、7、17、20、11、18、4、
二回目 14、16、10、20、17、11、16、19、17、10、19、19、4、7、9、12、2、7、20、16、
三回目 5、3、8、4、5、18、8、18、2、13、17、20、8、2、4、1、6、11、4、18、
ひどくない?これ…同じ数字ばっかりだよ…
まず一回目。18、18と連続で同じ数字が来てます。
18を引く確率は1/20個だから5%。それを二回だから0.05*0.05=0.0025…つまり0.25%。
まあ20回表示してるので起こりうる確率は大体5%なんですけど。
しかし一回目はそれが二つもあるし、なんだかなぁ…
いや、それがランダムって意味でしょや?って言われるとうんそうだねとしか言えないんだけど…
$rnd = ""; for($i=0;$i<20;$i++){ $rD = range(1,20); shuffle($rD); $rnd .= $rD[0]."、"; }
shuffleを使ってみた。
結果。
一回目 10、14、2、11、5、3、10、15、9、19、19、19、8、17、13、18、20、20、8、11、
二回目 14、17、4、10、13、16、11、1、12、1、13、13、10、11、3、19、18、7、3、10、
三回目 10、18、12、17、4、12、17、8、10、6、11、3、19、8、5、9、5、1、8、20、
一回目の19三連弾ww
全く変わらなかった…
$rnd = ""; for($i=0;$i<20;$i++){ $rD = range(1,20); shuffle($rD); $rnd .= $rD[rand(0,19)]."、"; }
いやまあただぐしゃぐしゃにしたら変わるかなと思って…
結果。
一回目 1、12、8、14、5、15、13、18、1、18、18、15、8、19、8、12、1、20、1、2、
二回目 10、20、12、9、20、7、15、20、15、7、6、10、8、15、14、20、13、13、14、19、
三回目 13、7、3、15、14、5、20、14、7、14、2、4、2、15、2、7、8、18、5、1、
11、16、17の三つの数字が出てない。これはひどいw
やっぱ前の値を保持しないとだめかも…はぁ…