在PHP中对for循环的结果进行随机排序

在PHP中对for循环的结果进行随机排序,php,mysql,random,Php,Mysql,Random,我有108002个项目,我正在跟踪 其中55011个将被命名为“项目1” 其中32531个将被命名为“项目2” 其中8060个将被命名为“项目3” 其中12400个将被命名为“项目4” 我使用for循环来实现这一点 for ($i = 1; $i <= 108002; $i++) { if($i <= 55011){ $item = "item1"; }else if($i > 55011 && $i < 87542 ){ $item = "it

我有108002个项目,我正在跟踪

其中55011个将被命名为“项目1”

其中32531个将被命名为“项目2”

其中8060个将被命名为“项目3”

其中12400个将被命名为“项目4”

我使用for循环来实现这一点

for ($i = 1; $i <= 108002; $i++) {


if($i <= 55011){

$item = "item1";

}else if($i > 55011 && $i < 87542 ){

$item = "item2";

}else if($i > 87542 && $i < 95602 ){

$item = "item3";

}else if($i > 95602 && $i <= 108002 ){

$item = "item4";

}

}
($i=1;$i 87542&&$i<95602)的
{
$item=“item3”;

}否则,如果($i>95602&&$i将它们放入一个数组中并执行它。

将它们放入一个数组中并执行它。

我希望您只执行一次,或者至少不经常执行,在这种情况下,您可能只想在php中创建一个巨大的数组,并按照Amber所说的洗牌()

如果该数组太大/太慢,您可以这样做(未经测试的伪代码)

left=[0550132531806012400]
对于108001..0中的i
r=rnd_0_至_1_小于(i)
对于1..4中的j
如果r
这有道理吗

编辑:不需要一个包含所有值的数组,而只需要“left”,表示1、2、3和4中还有多少个剩余。不需要从庞大的数组中随机删除元素,只需减少“left”中的一个计数即可


编辑:添加了最后两行代码(我怎么会忘记这些?

我希望您只做一次,或者至少不经常这样做,在这种情况下,您可能只想在php中创建一个巨大的数组,并像Amber说的那样洗牌()

如果该数组太大/太慢,您可以这样做(未经测试的伪代码)

left=[0550132531806012400]
对于108001..0中的i
r=rnd_0_至_1_小于(i)
对于1..4中的j
如果r
这有道理吗

编辑:不需要一个包含所有值的数组,而只需要“left”,表示1、2、3和4中还有多少个剩余。不需要从庞大的数组中随机删除元素,只需减少“left”中的一个计数即可


编辑:添加了最后两行代码(我怎么会忘记这些?)

我可以问一下你到底为什么要这样做吗?呵呵。我需要数据库中的一个表,其中包含这些记录,以跟踪物品的库存。我只运行一次,以便将数据输入数据库。我可以问一下你到底为什么要这样做吗?呵呵。我需要数据库中的一个表,其中包含这些记录,以跟踪物品的库存。我只运行一次g一次将数据输入数据库是的,我只做一次将数据输入数据库。是的,我只做一次将数据输入数据库。@tereško用于一次性任务?当然。@tereško用于一次性任务?当然。
left = [0, 55011, 32531, 8060, 12400]
for i in 108001..0
    r = rnd_zero_to_one_less_than(i)
    for j in 1..4
        if r < left[j]
            left[j] -= 1
            insert("item"+j)
            break
        r -= left[j]