作成日:2025/5/29
お疲れ様です、RUNTEQ60期のたかです!
最近のPHPの技術記事は少なめなので、学習したことを整理しました。
AtCoderをしていると、一部のテストケースに引っかかることってありますよね。
今回はABCのB問題をやっていたのですが、1/5くらいのテストケースに引っかかり、点数をもらえませんでした。
入力値の条件の組み合わせが膨大だったので、条件の範囲内のデータを毎回ランダムに生成させ、何度か手動テストをやってみようと考えました。
1≤n≤100、1≤k≤18で、1≤An≤10**kです。
$n = random_int(1,100);
$k = random_int(1,18);
$nKArray=[$n,$k];
$i=1;
$aNArray=[];
while($i<=$n){
array_push($aNArray, random_int(1,10**$k));
$i++;
}
このとき、実際に配列に入った要素を出力した結果が以下です。
n:38
k:10
0番目 1721846301
1番目 1359338077
2番目 7440610267
3番目 2487502206
4番目 3503713135
5番目 8201893223
6番目 2261886741
7番目 8824989205
8番目 5877855470
9番目 3769264639
10番目 7527891589
11番目 8211353776
12番目 2266644403
13番目 5368568581
14番目 2188218935
15番目 7486297860
16番目 8349502685
17番目 6168965458
18番目 9470267216
19番目 2914816982
20番目 1522561623
21番目 6368343780
22番目 9419902330
23番目 8003955411
24番目 3197665248
25番目 6137481864
26番目 6673916624
27番目 4124076805
28番目 3636392380
29番目 1579167486
30番目 2472470484
31番目 6418960669
32番目 6288710249
33番目 2163875527
34番目 3033649005
35番目 3976510501
36番目 8891234076
37番目 275742437
これを見た時の感想が「全然小さい値無いじゃん!これ均等に数値出現してるの?」でした。
全部桁数が大きく、1桁2桁の数値は出てきていませんね。
そこで、乱数を発生させる関数について調査を始めました。