我自己的快速背景。这是我第一次用PHP编码。我有一个计算机信息系统学位,在大学(大约15年前)学过C++,VB,Cobol和Java,但从此以后就没有真正使用它。当我学到这些时,有些东西正在回到我身边。生成随机数组
我试图模拟交易卡游戏的随机包装纸牌的开放。最终结果将打印出4页。每个页面将列出12个卡号和卡上的所有信息。
这就是我打算做:
步骤一: 生成不同范围的180张随机数。每个数字代表游戏中的一张牌。
- 范围1 = 35-74(116号)
- 范围2 = 75-106(46号)
- 范围3 = 107-134(16个数字,没有重复)
- 范围4 = 135-142(2号,无重复)
第二步: 取180个号码和其分解成90双。
第三步: 从90对,分成4组6对。
第四步: 从4个二套共6对,列出卡信息为每个编号并打印4页,1为每套。
我已经得到尽可能创造180个随机数字。我仍在努力获得唯一的号码。我试着为我需要的数字创建数组,但是没有一个能够工作。这里是我有的最后一个工作代码,它将生成我需要的180个数字,但是,范围3和4需要修复以避免重复。
我现在有这种编码的方式,它只是在屏幕上显示数字。我应该将它们存储在数组中吗?我只是完全解决了错误的方式?
<?php
// generate 116 common cards
echo "Commons: " . '<br />';
for ($commonfeed = 0; $commonfeed < 116; $commonfeed++) {
echo mt_rand(35, 74). '<br />';
}
// generate 46 uncommon cards
echo "Uncommons: " . '<br />';
for ($uncommonfeed = 0; $uncommonfeed < 46; $uncommonfeed++) {
echo mt_rand(75, 106). '<br />';
}
// generate 16 rare cards
echo "Rares: " . '<br />';
for ($rarefeed = 0; $rarefeed < 16; $rarefeed++) {
echo mt_rand(107, 134). '<br />';
}
// generate 2 super rare cards
echo "Super Rares: " . '<br />';
for ($superrarefeed = 0; $superrarefeed < 2; $superrarefeed++) {
echo mt_rand(135, 142). '<br />';
}
?>
不知道你的算法应该做什么,特别是什么分解成对集合应该实现 - 但是如果你想让你的初始范围外的随机数是唯一的,那么我建议你从'range'函数开始,'shuffle'得到的数组,然后从中选出第一个x元素那。 – CBroe
你如何打破90对(180卡)到4对6对? 6对= 12张卡,乘以4套,你得到48张卡。 – hummingBird
对不起,我应该澄清。上面的代码只是第1步。它创建了180个卡在一盒卡中。第2步将它们分成2个包。第3步模拟包的绘制。最后,是的,48张牌将被选中。所有180张卡片将不会被使用。这应该是模拟2人选秀。最终我想将其扩大到4或6. – DigitalFirefly