PHP-probleem met rand()
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)
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
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";
?>
$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
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.
Code (php)
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
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";
?>
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
}
}
?>
$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.
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...
Je moet bovenaan $cart als array defineren...
Dit werkt ook niet:
$cart = array("rand(1,52)");
dit zoekt, of wel?
Vertel met niet dat je zoiets als