プロが教えるわが家の防犯対策術!

php で $a, $b, $c... をそれぞれして指定したパーセントの割合で表示させるプログラムを教えて下さい

$a = 'hoge';
$b = 'huga';
$c = 'piyo';

$a は 10%, $b は 30%, $c は 60% といった具合に指定できつつ
$d, $e... と続いても パーセント指定していけるような関数を作りたいです

ご回答よろしくお願いしますm(__)m

A 回答 (3件)

$a = 'hoge';


$b = 'huga';
$c = 'piyo';

としたのであれば、

$data = array($a, $b, $c);
$perc = array(10, 30, 60);

と定義して($percは「割合」の数値=合計が100にならなくても可)。

$arr = array();
foreach ($data as $key=>$val) {
$arr = array_merge($arr, array_fill(0, $perc[$key], $val));
}
shuffle($arr);

とすればいいのでは?
    • good
    • 0
この回答へのお礼

この方法で可能でした
ありがとうございます

お礼日時:2014/06/20 01:41

>それぞれして指定したパーセントの割合で表示させるプログラム



考え方が2つあります
一つは、確率的に指定したパーセントで出現させる
もう一つは、確実にそのパーセントで出現させる

前者だと仮に10個表示した場合、必ずしもその割合にはなりませんが
確率的にはその割合ですので、何度もトライし統計だてて計算すると
その確率に近くなります

後者だと表示する数量が限定されます。
例示の命題であれば、最低10個表示し10の倍数ずつ表示しなければ
1:3:6で表示することはできません。
仮に、1:1:1だった場合は、3の倍数ずつ表示しなければいけないでしょう
    • good
    • 0

すみません。


> $a, $b, $c... をそれぞれして指定したパーセントの割合で表示
何をおっしゃっているのか、可能性がありすぎてわかりません。

「$a は 10%, $b は 30%, $c は 60%」
ならば
・hogeを10回、hugaが30回、piyoが60回、計100 回表示されればいいのか?
・↑の回数表示されるけど、順不同なのか?
・「真の確率」が10%というだけで、実際の実行で100回中11回とかになってもいいのか?
・hoge.huga...........piyo.................
と、hugeが10%の幅、hugaが30%の幅、piyoが60%の幅で表示する、という意味なのか?

まずは、やろうとしていることを、人に説明できるようにまとめてください。
まとめることで、なにをやるべきか見えることもあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!