[PHP] Getal splitsen en 2 van de 5 random kiezen
Ik heb voor een script nodig dat een getal (bijvoorbeeld 5) gesplitst word in 1, 2, 3, 4 en 5. Dit is niet zo lastig, ik heb gewoon een while loop gemaakt. Nu wil ik alleen dat er 2 van de 5 (bijvoorbeeld) random gekozen worden en dat daar nog iets achter komt. Dus dit is wat ik wil als output:
5. Gekozen
4.
3. Gekozen
2.
1.
Hoe is dit het beste mogelijk?
Alvast bedankt :)
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
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
<?php
// array grootte
$getal = 5;
// aantal dat gekozen moet worden
$tekiezen = 2;
// tekst
$waarde = 'Gekozen';
// het array maken
$array = range(0, $getal);
// de nul waarde verwijderen
unset($array[0]);
// for loop van het aantal
for($i=0; $i<$tekiezen; $i++)
{
do
{
// random kiezen
$rand = rand(1, $getal);
} // doorgaan als reeds gekozen
while($array[$rand] == $waarde);
// gekozen in het array zetten
$array[$rand] = $waarde;
}
// resultaat
echo '<pre>'.print_r($array,true).'</pre>';
?>
// array grootte
$getal = 5;
// aantal dat gekozen moet worden
$tekiezen = 2;
// tekst
$waarde = 'Gekozen';
// het array maken
$array = range(0, $getal);
// de nul waarde verwijderen
unset($array[0]);
// for loop van het aantal
for($i=0; $i<$tekiezen; $i++)
{
do
{
// random kiezen
$rand = rand(1, $getal);
} // doorgaan als reeds gekozen
while($array[$rand] == $waarde);
// gekozen in het array zetten
$array[$rand] = $waarde;
}
// resultaat
echo '<pre>'.print_r($array,true).'</pre>';
?>
Is het ook mogelijk om meerdere dingen te krijgen?
Dus dat je array er zo uitziet:
Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 1
[6] => 3
[7] => 2
[8] => 2
[9] => 1
)
Code (php)
Waarom dan niet:
Toevoeging op 15/07/2014 19:33:00:
Luit Hollander op 15/07/2014 19:20:16:
Dankjewel, het werkt!
Is het ook mogelijk om meerdere dingen te krijgen?
Dus dat je array er zo uitziet:
Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 1
[6] => 3
[7] => 2
[8] => 2
[9] => 1
)
Is het ook mogelijk om meerdere dingen te krijgen?
Dus dat je array er zo uitziet:
Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 1
[6] => 3
[7] => 2
[8] => 2
[9] => 1
)
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$max = 5;
$aantal_in_array = 10;
array_fill(0, $aantal_in_array, array_rand(range(1, $max));
?>
$max = 5;
$aantal_in_array = 10;
array_fill(0, $aantal_in_array, array_rand(range(1, $max));
?>
Eddy E op 15/07/2014 19:30:37:
Ik wilde beginnen met key 1 en niet met key 0
Eddy E op 15/07/2014 19:30:37:
Ik bedoel niet dat het random is, maar bijvoorbeeld dit
$aantal1 = 2;
$aantal2 = 1;
$aantal3 = 5;
Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 3
[6] => 1
[7] => 3
[8] => 3
)
Dus dat er echt 5 keer 3 bij een random getal komt.
Alvast bedankt!
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
<?php
// welke waarde je hoevaak voor wilt laten komen
$values = array(
'1' => 2,
'2' => 1,
'3' => 5
);
$array = array();
foreach( $values as $k => $v )
{
for( $i=0; $i<$v; $i++ )
{
$array[] = $k;
}
}
shuffle( $array);
var_dump( $array );
/*
array (size=8)
0 => int 3
1 => int 3
2 => int 2
3 => int 3
4 => int 1
5 => int 3
6 => int 3
7 => int 1
*/
?>
// welke waarde je hoevaak voor wilt laten komen
$values = array(
'1' => 2,
'2' => 1,
'3' => 5
);
$array = array();
foreach( $values as $k => $v )
{
for( $i=0; $i<$v; $i++ )
{
$array[] = $k;
}
}
shuffle( $array);
var_dump( $array );
/*
array (size=8)
0 => int 3
1 => int 3
2 => int 2
3 => int 3
4 => int 1
5 => int 3
6 => int 3
7 => int 1
*/
?>
Dankjullie wel, het is gelukt!