我有用于rand(); 我需要从1到数量rand 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>';
}
我在这里有一些逻辑错误吗?我想也许可以使用,但也应该工作。
答案 0 :(得分: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));
答案 1 :(得分: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>";
}
}
?>
我查了一下,这段代码在本地服务器上运行:)
答案 2 :(得分:1)
$count = 15;
$values = range(1, $count);
shuffle($values);
$values = array_slice($values, 0, 4);
答案 3 :(得分:0)
你可以这样做(它将为你提供一个包含原始数组随机键的数组):
<?php
$array = array();
$max = 100;
$numberValuesWanted = 5;
for($i = 0; $i < $max; $i++)
$array[] = $i;
$randomKeys = array_rand($array, $numberValuesWanted);
print_r($randomKeys);