快速了解自己。这是我第一次用PHP编写代码。我拥有计算机信息系统学位,在大学(大约15年前)学习过C ++,VB,Cobol和Java,但从那时起就没有真正使用过它。我学到了一些东西后,又回到了我的脑海。
我正在尝试模拟用于随机纸牌游戏的随机纸牌的打开。最终结果将打印出4页。每页将列出12个卡号,以及卡上的所有信息。
这是我打算做的事情:
第一步:从不同范围生成180个随机数。每个数字代表游戏中的一张牌。
第二步:提取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 />';
}
?>
您可以尝试以下解决方案:
$cards = array();
// get cards per range
for($i = 0; $i < 116; $i++) {
// range 1:
$cards[] = mt_rand(35, 74);
// for the fun, let's also do range 2:
if($i < 46) {
$cards[] = mt_rand(75, 106);
}
}
// range 3: (and range 4)
$rare = array();
$superrare = array();
for ($i = 107; $i <= 134; $i++) {
$rare[] = $i;
// range 4:
if ($i <= 114) {
$superrare[] = $i + 28;
}
}
shuffle($rare);
shuffle($superrare); // not the best choice of randomness (check: http://stackoverflow.com/questions/5694319/how-random-is-phps-shuffle-function)
$cards = array_merge($cards, array_slice($rare, 0, 16));
$cards = array_merge($cards, array_slice($superrare, 0, 2));
// shuffle everything one more time since cards have been added randomly
// to the deck
shuffle($cards);
// now when we have everything in $cards - 180 of random cards, we can
// pack them
$pack1 = array_slice($cards, 0, 90);
$pack2 = array_slice($cards, 90, 90);
// always picking first n cards because they are all shuffled
$player1Drafted = array_slice($pack1, 0, 48);
$player2Drafted = array_slice($pack2, 0, 48);
// print it all
print_r(array('Player1' => $player1Drafted,
'Player2' => $player2Drafted));
最后,我不能完全确定我猜想起草过程还可以,但是在我看来,随机化是最大的问题,我已经解决了。再说一次,如果您认为改组还不够好,可以采取不同的方法,但这是另一回事了;)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句