我的问题可能很容易回答。但我无法弄清楚。我怎样才能生成多个随机数字在没有相同的PHP
<?php
$id1 = rand(1,4);
$id2 = rand(1,4);
$id3 = rand(1,4);
$id4 = rand(1,4);
?>
我有这个。但是这有时会创建多个3等。但在我的项目中,这是不可能发生的事情。最后,范围将在1到100之间。但这只是为了测试它如何工作。有人可以帮帮我吗?
我的问题可能很容易回答。但我无法弄清楚。我怎样才能生成多个随机数字在没有相同的PHP
<?php
$id1 = rand(1,4);
$id2 = rand(1,4);
$id3 = rand(1,4);
$id4 = rand(1,4);
?>
我有这个。但是这有时会创建多个3等。但在我的项目中,这是不可能发生的事情。最后,范围将在1到100之间。但这只是为了测试它如何工作。有人可以帮帮我吗?
创建您可以从中选择的一系列值。 随机播放并获取前N个结果。
$range = range(0, 100);
shuffle($range);
$n = 10;
$result = array_slice($range, 0 , $n);
这是什么目的?
但是,也许你可以简单地这样做:
$ids = range(1, 10);
shuffle($ids);
var_dump($ids);
/*
* 1st Result:
*
* array (size=10)
* 0 => int 10
* 1 => int 2
* 2 => int 5
* 3 => int 7
* 4 => int 9
* 5 => int 1
* 6 => int 3
* 7 => int 6
* 8 => int 4
* 9 => int 8
*/
var_dump($ids);
/*
* 2nd Result:
*
* array (size=10)
* 0 => int 5
* 1 => int 9
* 2 => int 6
* 3 => int 4
* 4 => int 2
* 5 => int 10
* 6 => int 3
* 7 => int 7
* 8 => int 8
* 9 => int 1
*
*/
检查这个代码:
$values=array(); #preparint storage for numbers
$found=0; #number of found numbers
while($found!=4): #script is looking for 4 numbers
$v=rand(1,4); #range of numbers (1-4)
if(!in_array($v,$values)): #if found number isn't in array
$values[]=$v; #add it
$found++; #and increment counter
endif;
endwhile;
foreach($values as $value):
echo '<p>'.$value.'</p>'; #echo found numbers
endforeach;
脚本准备在1-4范围内找到4个随机,唯一的编号。
$temp = array() // global
$id1 = is_num_exists(rand(1,4));
$id2 = is_num_exists(rand(1,4));
$id3 = is_num_exists(rand(1,4));
$id4 = is_num_exists(rand(1,4));
function is_num_exists($id){
while(in_array($id,$temp)){
$id = rand(1,4);
}
$temp[] = $id;
return $id
}
有实现这一几种方法:
创建给定的范围(使用range()
功能)的阵列,并且将它洗。要检索这些值,你可以走它。如果你的范围不是太大,这很有用。这似乎是你的情况。
$range = range(1, 10);
shuffle($range);
如果您的范围要大得多,你最好存储你选择的值到排序后的数组,检查被存在所述阵列内的每个后续的随机数。这只适用于非常大的范围,因为不像第一个例子那样,所有可能的值都被加载到内存中。
$passedValues = array();
for ($i = 0; $i < 10; $i++) {
$v;
do {
$v = rand(1, 100);
}
while (in_array($passedValues));
$passedValues[] = $v;
sort($passedValues);
}
其他的答案提供了一些伟大的代码示例。
如果数字不是太多,请尝试将它们存储到一个数组,并过滤掉重复的数字。 –
从1-4创建一个数组,然后对数组进行随机排序。 – David
如果您生成4个随机数,甚至有可能它们都是相同的。与你的短距离,这种可能性更高。最后你想要什么?数字1-4以随机顺序排列,还是有限数量的重复? – Desaroll