-1

まあ、私はrand();を使用しています。1 から x 量を 4 回ランドして、値が返されないようにする必要があります。

これは私のコードです:

 $Count = 15;
 $secondstage = '';
 $arrayindex = '';
 for($i=1; $i<5; $i++){
    $arrayindex = rand(1,$Count);
    if($secondstage == $arrayindex){
        for($b=1; $arrayindex == $secondstage; $b++){
            $arrayindex = rand(1,$Count);
        }
    }
    $secondstage = $arrayindex;
    echo $secondstage;
    echo '<br>';
 }

ここで論理的な間違いがありますか?while を使用することも考えましたが、 for も機能するはずです。

4

4 に答える 4

2

つまり、基本的には、1 から 15 までの 4 つのランダムな繰り返しのない数字が必要ですか? そのためにあまりにも多くのコードを使用しています。より単純なバージョン:

$numbers = array();
do {
   $possible = rand(1,15);
   if (!isset($numbers[$possible])) {
      $numbers[$possible] = true;
   }
} while (count($numbers) < 4);
print_r(array_keys($numbers));
于 2012-08-04T00:38:12.663 に答える
1

すでに乱数を配列に入れます:

<?php 
$count = 15;
$cArray = array();
for($i=1; $i<5; $i++){
    $rand = rand(1, $count);
    if(in_array($rand, $cArray)){
        $i--;
    } else {
        $cArray[] = $rand;
        echo $rand . "<br>";
    }
   }
?>

私はそれをチェックしました、このコードはローカルサーバーで動作します:)

于 2012-08-04T00:48:32.677 に答える
1
$count = 15;
$values = range(1, $count);
shuffle($values);
$values = array_slice($values, 0, 4);
于 2012-08-04T02:43:03.050 に答える
0

これを行うことができます(元の配列のランダムキーを持つ配列が得られます):

<?php

$array = array();
$max = 100;
$numberValuesWanted = 5;

for($i = 0; $i < $max; $i++)
  $array[] = $i;

$randomKeys = array_rand($array, $numberValuesWanted);

print_r($randomKeys);
于 2012-08-04T00:37:30.217 に答える