Как сравнить два случайно выбранных массива с более ранними выборками?

Я пытаюсь создать версию покера, в которой программа раздает 2 карты каждому игроку (6 из них). Я разработал программу, которая может выбрать 1 случайную карту для каждого игрока, но проблема в том, что иногда 2 игрока получают одну и ту же карту. Моя попытка решить эту проблему состояла в том, чтобы дать каждому циклу различное значение, основанное на месте карт в массиве + значение циклов, а затем сравнить его с более ранними циклами, но без какого-либо успеха …

Вот моя в настоящее время «рабочая» программа:

<?php

$colour = array('Heart', 'Diamonds', 'Spades', 'Clubs');
$card = array('Ace', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Jack', 'Queen', 'King');

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

$m = 0;
$n = 0;

$random1 = array_rand($card);
echo $card[$random1];
$m = $card[$random1];

$random2 = array_rand($colour);
echo " ". $colour[$random2];
$n = $colour[$random2];

}
?>

Как мне продолжить? Есть ли более простой способ сделать это?

0

Решение

Вы всегда можете сделать это как настоящую колоду карт, а не два массива, один массив, содержащий все карты от туза и короля в каждой масти

например

$cards = array('AH', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H',
'TH', 'JH', 'QH', 'KH', 'AD', '2D', '3D', '4D', '5D',
'6D', '7D', '8D', '9D', 'TD', 'JD', 'QD', 'KD', 'AC',
'2C', '3C', '4C', '5C', '6C', '7C', '8C', '9C', 'TC',
'JC', 'QC', 'KC', 'AS', '2S', '3S', '4S', '5S', '6S',
'7S', '8S', '9S', 'TS', 'JS', 'QS', 'KS');

// then the appropriately named...

shuffle($cards);

// then "deal" the cards by looping through the array from the beginning!

$i = 0;

for ($player = 0; $player < 6; $player ++) {
echo "<br />Player $player : Card 1 = " . $cards[$i++];
echo " Card 2 = " . $cards[$i++];
}

Вы могли бы иметь отдельную функцию для перевода «AH», «9S» и т. Д. В фактические имена карт или фактически устанавливать их с их отображаемыми именами во время создания массива.

0

Другие решения

$Cards=array();

while(count($Cards)<(2*6)){
$colour = array('Heart', 'Diamonds', 'Spades', 'Clubs');
$card = array('Ace', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Jack', 'Queen');

shuffle($card);
$m = array_shift($card);

shuffle($colour);
$n = array_shift($colour);

echo $card = $m."/".$n;
$Cards[$card]=$card;
echo '<br>';
}
$Cards=array_values($Cards);

echo '<pre>';
var_export($Cards);#2 unique cards for each player in array

Просто путь.

0

По вопросам рекламы [email protected]