Подскажите условие

1. mix (01.02.2012 / 05:19)
как в rand(1111,9999); сделать условие, чтобы 4 числа были уникальными(т.е. не повторялись)?

2. Дмитрий (01.02.2012 / 06:44)
range мб?

3. Дмитрий (01.02.2012 / 06:55)
вернее range + array_rand

4. mix (01.02.2012 / 15:34)
не знаю, поподробней можно?

Добавлено через 03:17 сек.
я тоже щас попытаюсь точнее объяснить ситуацию:
вообщем 4 игрока и 32 карты, 4 масти и 8 карт в одной масти(7,8,9,10,J,Q,K,A).
нужно 32 карты разделить 4ем игрокам, чтобы все карты были уникальными

5. Удаленный (01.02.2012 / 15:38)
mt_rand

6. mix (01.02.2012 / 15:39)
MaZaHaKeR (1 Февраля 2012 / 15:38)
mt_rand
Покажи, пожалуйста, на моем примере

7. Удаленный (01.02.2012 / 15:40)
Твои числа записываются куда нибудь?

8. mix (01.02.2012 / 15:41)
я еще игру не написал, но планирую числа в бд хранить

9. Удаленный (01.02.2012 / 15:43)
Тогда тебе функция нужна которая проверяет выпавшее число со всеми остальными и если есть совпадение то идет генерация другого числа. Написать код не могуsmile

10. Дмитрий (01.02.2012 / 15:45)
32 Карты занеси в массив,, выбираешь рандомно 1 ячейку в массиве сохраняешь ее в массив для 1 игрока и из массива с картами удаляешь эту ячейку так до 8, потом для игрока 2 тоже также, но массив у тебя все тот с 32 картами должен стать 32-8 после 2 игрока 32-8-8 и т.д У всех игроков карты будут уникальны

11. Дмитрий (01.02.2012 / 20:25)
Когда то делал поднобное, использовал foreach и перемешивал shuffle

12. KOZZ (01.02.2012 / 20:35)
в файл пиши числа выпадающие, потом проверяй на наличие в файле

13. Дмитрий (01.02.2012 / 20:58)
Как то так
<?
function array_shuffle($array)
{
	$i = count($array);

	while(--$i) {
		$j = mt_rand(0, $i);
		if ($i != $j) {
			$tmp = $array[$j];
			$array[$j] = $array[$i];
			$array[$i] = $tmp;
		}
	}

	return $array;
}

$cards = range(1, 32);
$cards = array_shuffle($cards);

print_r($cards);

Функция перемешает 32 карты уникально, там уже раздавай их на четверых

14. mix (01.02.2012 / 21:04)
MECHANIC (1 Февраля 2012 / 20:58)
Как то так
<?
function array_shuffle($array)
{
 $i = count($array);

 while(--$i) {
  $j = mt_rand(0, $i);
  if ($i != $j) {
   $tmp = $array[$j];
   $array[$j] = $array[$i];
   $array[$i] = $tmp;
  }
 }

 return $array;
}

$cards = range(1, 32);
$cards = array_shuffle($cards);

print_r($cards);

Функция перемешает 32 карты уникально, там уже раздавай их на четверых
Хорошо, спасибо, попробую, если что напишу

15. Дмитрий (01.02.2012 / 21:11)
Я так понял ты "козёл" пишешь?
У меня были исходники когда то... забросил, вот нашел если понадобится сравнения
<?
$card_name = array( 
    'масть' => array( 'червы', 'пики', 'бубны', 'крести' ), 
    'достоинство' => array( 'двойка', 'тройка', 'четверка', 'пятерка', 'шестерка', 'семерка', 'восьмерка', 'девятка', 'десятка', 'валет', 'дама', 'король', 'туз'), 
); 

function card($num) { return array( (int)(($num - 1) % 13), (int)(($num - 1) / 13)); } 

// проверка: 
foreach( range(1,52) as $num ) { 
    list($dostoinstvo,$mast) = card($num); 
    echo $mast.": ".$card_name['масть'][$mast] ."; "; 
    echo $dostoinstvo.": ".$card_name['достоинство'][$dostoinstvo]."\n"; 
} 

// проверка сравнения: 
list($card1_dost, $card1_mast) = card( 5 ); // карта 1 
list($card2_dost, $card2_mast) = card( 18 ); // карта 2 

if ( $card2_dost == $card1_dost ) echo "карты одного достоинства\n";


16. mix (01.02.2012 / 21:44)
не, эт армянская карточная игра, "блот" называется

17. mix (01.02.2012 / 22:13)
MECHANIC (1 Февраля 2012 / 21:11)
Я так понял ты "козёл" пишешь?
У меня были исходники когда то... забросил, вот нашел если понадобится сравнения
<?
$card_name = array( 
    'масть' => array( 'червы', 'пики', 'бубны', 'крести' ), 
    'достоинство' => array( 'двойка', 'тройка', 'четверка', 'пятерка', 'шестерка', 'семерка', 'восьмерка', 'девятка', 'десятка', 'валет', 'дама', 'король', 'туз'), 
); 

function card($num) { return array( (int)(($num - 1) % 13), (int)(($num - 1) / 13)); } 

// проверка: 
foreach( range(1,52) as $num ) { 
    list($dostoinstvo,$mast) = card($num); 
    echo $mast.": ".$card_name['масть'][$mast] ."; "; 
    echo $dostoinstvo.": ".$card_name['достоинство'][$dostoinstvo]."\n"; 
} 

// проверка сравнения: 
list($card1_dost, $card1_mast) = card( 5 ); // карта 1 
list($card2_dost, $card2_mast) = card( 18 ); // карта 2 

if ( $card2_dost == $card1_dost ) echo "карты одного достоинства\n";
если есть свободное время, то зайди в асю поговорим немного

18. mix (04.02.2012 / 16:56)
короче у меня выводятся ид иб карты в виде:
0: 25
2: 10
3: 9
... и т.д.
как щас мне добавить к каждой карте ид юзера и занести в БД?

19. Дмитрий (04.02.2012 / 17:04)
implode() мб?

20. mix (04.02.2012 / 17:05)
мб, щас почитаю об этой функции

21. mix (04.02.2012 / 17:23)
не, implode() не помог

Добавлено через 08:48 сек.
а если создать 32 запроса таким способом:
mysql_query("INSERT INTO `cards` SET `usid` = '1' `card_id` = '".$cards[0]."'");
и так далее до $cards[31] это будет большая нагрузка на бд?

22. Николай (04.02.2012 / 19:40)
21. shavo, нее не стоит так точно)))

23. mix (04.02.2012 / 20:37)
ritlen (4 Февраля 2012 / 19:40)
21. shavo, нее не стоит так точно)))
уже разобралсяsmile

URL: https://visavi.net/topics/29031