在PHP中对for循环的结果进行随机排序
我有108002个项目,我正在跟踪 其中55011个将被命名为“项目1” 其中32531个将被命名为“项目2” 其中8060个将被命名为“项目3” 其中12400个将被命名为“项目4” 我使用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
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]