我的问题可能很容易回答。但我无法弄清楚。
<?php
$id1 = rand(1,4);
$id2 = rand(1,4);
$id3 = rand(1,4);
$id4 = rand(1,4);
?>
我有这个。但这有时会产生多个3等等。但在我的项目中,这是不可能发生的事情。最后,范围将在1到100之间。但这只是为了测试它是如何工作的。有人可以帮助我吗?
答案 0 :(得分:1)
这是为了什么目的?
但是,也许你可以这样做:
$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
*/
shuffle($ids);
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
*
*/
答案 1 :(得分:1)
创建一系列您可以选择的值。 将它洗牌并取得前N个结果。
$range = range(0, 100);
shuffle($range);
$n = 10;
$result = array_slice($range, 0 , $n);
答案 2 :(得分:0)
检查此代码:
$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个随机的唯一数字。
答案 3 :(得分:0)
$quote->setCustomerId(null)
->setCustomerEmail($quote->getBillingAddress()->getEmail())
->setCustomerIsGuest(true)
->setCustomerGroupId(Group::NOT_LOGGED_IN_ID);
$quote->collectTotals();
$orderId = $this->cartManagement->placeOrder($quote->getId());
答案 4 :(得分:0)
有几种方法可以实现这一目标:
创建给定范围的数组(使用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);
}
其他答案提供了一些很棒的代码示例。