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

1から50までの整数のうち、

重複しない15個を取り出したいのですが。


どう書けばいいでしょうか?

A 回答 (3件)

難しく考えず、1から50までの数字を配列に


いれて、shuffleすればいいのではないでしょうか?
トランプなんか作るときはこんな感じですよね

<?PHP
for ($i =1; $i<=50;$i++){
$a[]=$i;
}
shuffle($a);
for ($i =0; $i<=14;$i++){
print $a[$i]."<br>";

}
?>
    • good
    • 0

どうでしょう?


<?
//いくつ必要か
$total = 15;
//変数の初期化
$data = array();

//データの数が$totalになるまでくりかえす。
while( count( $data) < $total){
  $tmp = mt_rand(0,50);
  //変数の初期化
  $val = '';
  $flag = '';
  foreach( $data as $val){
    //$dataに$tmpがあれば フラグ立て
    if( $val==$tmp) $flag = 1;
  }
  //フラグがたってなければ$dataに入れる。
  if( $flag!==1){
    $data[] = $tmp;
  }
}
print_r( $data);
?>
    • good
    • 0

こんな感じでどうでしょう


<?php
#1から50までの整数のうち、重複しない15個を取り出す

$count=0;
while($count<15){
$v=rand(1,50);
if(is_null($array[$v])){
$array[$v]=$v;
$count++;
}
}
foreach ($array as $v) {
print "$v\n";
}
print "\n";
$rand15 = array_values($array);#番号振り直し
for($i=0;$i<15;$i++){
print "$rand15[$i]\n";
}
?>
    • good
    • 0

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