tk_zawa Blog

イイ感じのランダムにピックしてくれる関数

August 25, 2020

やりたかったこと

設定された最大値の中で、
指定された個数だけランダム且つユニークな数値要素を持つ配列を取得したい。

実装したこと

function rand_picks(int $max, int $remainingTime = 3, int $start = 1): array {
  $nums = [];
  for ($num = $start; $num <= $max; $num++) {
    $nums[] = $num;
  }

  $uniques = [];
  while ($remainingTime > 1) {
    $p = array_rand($nums);
    $uniques[] = $nums[$p];
    unset($nums[$p]);
    $remainingTime--;
  }

  return $uniques;
}