PHP-probleem met rand()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

17/01/2005 22:19:00
Quote Anchor link
Hallo,

Ik heb een probleempje met de functie rand() in PHP.
Ik wil namelijk dat het script 16 kaarten van de 52 kaarten verdeelt onder 4 mensen.

Dit had ik al: (elk getal staat voor 1 van de 52 kaart)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php

$cart_1
=rand(1,52);
$cart_2=rand(1,52);
$cart_3=rand(1,52);
$cart_4=rand(1,52);

$cart_5=rand(1,52);
$cart_6=rand(1,52);
$cart_7=rand(1,52);
$cart_8=rand(1,52);

$cart_9=rand(1,52);
$cart_10=rand(1,52);
$cart_11=rand(1,52);
$cart_12=rand(1,52);

$cart_13=rand(1,52);
$cart_14=rand(1,52);
$cart_15=rand(1,52);
$cart_16=rand(1,52);



echo "User 1:<BR>\n";

echo "- $cart_1<br>\n";
echo "- $cart_2<br>\n";
echo "- $cart_3<br>\n";
echo "- $cart_4<br>\n";


echo "<BR><BR>User 2:<BR>\n";

echo "- $cart_5<br>\n";
echo "- $cart_6<br>\n";
echo "- $cart_7<br>\n";
echo "- $cart_8<br>\n";


echo "<BR><BR>User 3:<BR>\n";

echo "- $cart_9<br>\n";
echo "- $cart_10<br>\n";
echo "- $cart_11<br>\n";
echo "- $cart_12<br>\n";


echo "<BR><BR>User 4:<BR>\n";

echo "- $cart_13<br>\n";
echo "- $cart_14<br>\n";
echo "- $cart_15<br>\n";
echo "- $cart_16<br>\n";

?>


Alleen het probleem is dat er altijd wel een keer een getal twee keer voorkomt. Dat is natuurlijk niet de bedoelling, want elke kaart komt in een kaartspel maar 1 keer voor! Weet iemand wat ik moet veranderen of toevoegen? Alvast bedankt!

// Edwin
 
PHP hulp

PHP hulp

24/11/2024 06:08:19
 
Bart Waarom verplicht

Bart Waarom verplicht

17/01/2005 22:45:00
Quote Anchor link
Checken of het nummer al bestaat.

Met een while ofzo

while($nr2 = $nr) { $nr2 = rand(1,52); }

En je kan ze dan eventueel in een array zetten, is makkelijker te vinden.
 
Ano Niem

Ano Niem

17/01/2005 22:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
while($i < 16) {
  $card = rand(1,52);
  if(!in_array($card, $arr)){
    $i++;
    $arr[] = $card;
  }
}

echo "User 1:<BR>\n";
echo "- ". $arr[0] ."<br>\n";
echo "- ". $arr[1] ."<br>\n";
echo "- ". $arr[2] ."<br>\n";
echo "- ". $arr[3] ."<br>\n";

echo "<BR><BR>User 2:<BR>\n";
echo "- ". $arr[4] ."<br>\n";
echo "- ". $arr[5] ."<br>\n";
echo "- ". $arr[6] ."<br>\n";
echo "- ". $arr[7] ."<br>\n";


echo "<BR><BR>User 3:<BR>\n";
echo "- ". $arr[8] ."<br>\n";
echo "- ". $arr[9] ."<br>\n";
echo "- ". $arr[10] ."<br>\n";
echo "- ". $arr[11] ."<br>\n";

echo "<BR><BR>User 4:<BR>\n";
echo "- ". $arr[12] ."<br>\n";
echo "- ". $arr[13] ."<br>\n";
echo "- ". $arr[14] ."<br>\n";
echo "- ". $arr[15] ."<br>\n";
?>


zoiets zou een oplossing kunnen bieden. Ik kan het nu niet testen bij gebrek aan me server :x
 
Arend a

Arend a

18/01/2005 03:27:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$kaarten
= range(1, 52);
// kaarten met nummers 1 t/m 52.
shuffle($kaarten);
//kaarten schudden

for ($spelers = 0; $spelers < 4; $spelers++) {
// vier spelers
  echo "<br><br>User $speler:<br>";
  for ($hand = 0; $hand < 4; $hand++) {
  // elke speler vier kaarten
    echo "-" . array_shift($kaarten) . "<br>";
    // pak de bovenste kaart van de stapel
  }
}

?>


Dit is dus redelijk makkelijk aan te passen zodat je ook 5 spelers kan doen en 5 kaarten pp.
 

23/01/2005 13:40:00
Quote Anchor link
Ok, bedankt voor jullie hulp.
Ik heb het script van Sickness ff geprobeerd, hij werk wel. Maar er staat een warning boven:

Warning: in_array(): Wrong datatype for second argument in /home/www/e-test.hollosite.com/carts.php on line 4

(http://e-test.hollosite.com/carts.php)

Ik zou niet weten hoe ik dit zou kunnen verhelpen...
 
Olaf Lederer

Olaf Lederer

25/01/2005 12:08:00
Quote Anchor link
Je moet bovenaan $cart als array defineren...
 

25/01/2005 14:43:00
Quote Anchor link
ok, en hoe...

Dit werkt ook niet:
$cart = array("rand(1,52)");
 
Mitch X

Mitch X

25/01/2005 15:32:00
Quote Anchor link
Vertel met niet dat je zoiets als dit zoekt, of wel?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.