A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
$a=array_merge(
array_fill(1,3,1),
array_fill(1,9,2),
array_fill(1,72,3),
array_fill(1,316,4)
);
shuffle($a);
while(($n=array_shift($a))){
print $n." ";
if($n==1) break;
}
No.1
- 回答日時:
以下のようにしてください。
<?php
$rank1 = 0;
$rank2 = 0;
$rank3 = 0;
$rank4 = 0;
$ctr = 0;
srand(time());
while(TRUE){
$n = rand(1,10000);
$ctr++;
switch($n){
case $n <= 75:
$rank1++;
break;
case $n <= 300:
$rank2++;
break;
case $n <= 2100:
$rank3++;
break;
default:
$rank4++;
break;
}
if($ctr==100000) break;
if ($rank1 > 0) break;
}
printf("rank1=%d rank2=%d rank3=%d rank4=%d ctr=%d\n",$rank1,$rank2,$rank3,$rank4,$ctr);
printf("rank1 %4.2f%%\n",100*$rank1/$ctr);
printf("rank2 %4.2f%%\n",100*$rank2/$ctr);
printf("rank3 %4.2f%%\n",100*$rank3/$ctr);
printf("rank4 %4.2f%%\n",100*$rank4/$ctr);
?>
実行結果
rank1=1 rank2=0 rank3=17 rank4=57 ctr=75
rank1 1.33%
rank2 0.00%
rank3 22.67%
rank4 76.00%
次に
if ($rank1 > 0) break;の行をコメントアウトして実行してください。
以下のような実行結果になります。
rank1=776 rank2=2244 rank3=17980 rank4=79000 ctr=100000
rank1 0.78%
rank2 2.24%
rank3 17.98%
rank4 79.00%
1等が0.75%、2等が2.25%、3等が18.00%、4等が79.0%付近の確率で実行されているのが判ります。
不明点は補足してください。
この回答へのお礼
お礼日時:2021/06/07 13:19
回答ありがとうございます!
自分が考えていたプログラムと全く違っていたのでびっくりです。(ここまで思い付きませんでした)
ありがとうございます!作成してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- Visual Basic(VBA) VBAプログラム初心者です。 以下の問題のプログラムを表記してみたのですが、実行するためには、どこを 4 2023/01/19 20:04
- その他(プログラミング・Web制作) 大学一年でVBAのプログラミングを勉強しているものです。来週の情報の授業で以下の問題のプログラムを勉 4 2023/01/19 16:15
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# 1. 仮想CPU「exmini」を使用して,「$dataからn減算する」プログラムを作成してください 2 2022/07/04 17:49
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の添え字が小数だとどうなる?
-
配列の初期化
-
配列の要素(value)に、変数を...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
行列
-
c言語 単位行列
-
pythonのnumpyでの繰り返しでの...
-
PHPからCSVをアップロード後、m...
-
配列を回すとき、最後の要素だ...
-
CSVデータの行数カウントをした...
-
別ファイルの構造体の値を読み...
-
順位を付ける時のスコアの重複...
-
file_existsでファイル名の部分...
-
CSVファイルの最終行のデー...
-
foreachのなかで次のキーを参照...
-
チェックボックス複数選択 mys...
-
漢字のソートについて
-
マッチング処理(1:N)
-
String だと「 ByRef引数の型が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
C言語の配列をPush(追加)する...
-
php で1から100までの素数の表...
-
STLのvectorで作った配列をメン...
-
スカラーのベクトル微分
-
行列
-
Perlで重複行を削除したい
-
配列の要素(value)に、変数を...
-
特定の文からメールアドレスの...
-
forとかで連番の変数を一気に格...
-
C言語 最大値と最小値を求めて...
-
CArrayの要素としてCStringArra...
-
PHPでユニークIDを作る
-
fgetc関数について
-
読み(あ行~わ行)ごとに分け...
-
Pager::factory()の使い方がわ...
-
verilogで、配列の一部をタスク...
-
mallocで char *型の配列を確...
-
c言語 単位行列
-
連想配列で値が空だったら、要...
おすすめ情報