Hallo,

Ik heb het volgende rijtje getallen gegenereerd(elke keer anders natuurlijk):
14-21-9-16-13-20-25-30-35-

Deze getallen mogen niet random gekozen worden, de rest van de getallen (inclusief 36) wel.

Wat voor functie zou ik kunnen gebruiken?

Ik dacht zelf aan rand en als het getal in het rijtje staat gekozen wordt de functie opnieuw uit te voeren. Dit kan echter in principe eeuwig doorgaan zonder mazzel. Is er een snellere manier?
Maak een array waaruit gekozen kan worden?
Dus een random getal genereren die niet een van deze waarden uit het lijstje is?
[code]<?php
$magNiet = array(14, 21, 9, 16, 13, 20, 25, 30, 35);

for($i = 0; $i < 10; $i++)
{
$random = rand(1,36);
if(empty(array_search($random, $magNiet)))
{
echo $random;
}
}
Gamer, wanneer nu een getal uit de array gegenereerd wordt zal de loop doorgaan maar het getal niet op het scherm getoond worden. Op die manier krijg je dus een wisselend aantal getallen...

<?php
$magNiet = array(14, 21, 9, 16, 13, 20, 25, 30, 35);

for($i=0; $i < 10; $i++)
{
$j = rand(0,36);

while(in_array($j,$magNiet))
{
$j = rand(0,36);
}

$getallen[] = $j;
}
?>
Ik zou het zo doen;

<?php
$array = range(1,100);

$verbodenkeys = array_rand($array, 10);

echo 'Deze nummers mochen niet gekozen worden!';
echo '<pre>';
print_r($verbodenkeys);
echo '</pre>';

foreach($verbodenkeys as $verbodenkey)
{
unset($array[$verbodenkey-1]);
}

echo 'En deze is het geworden:<br>';
echo array_rand($array);

?>

Dit voorbeeld is een beetje uitgebreid, maar wel leuk. We hebben een array met de getallen 1 t/m 100. Vervolgens halen we daar random 10 nummers uit die niet gekozen mogen worden (jouw 14-21-9 etc) en dan trekken we daaruit 1 nummers.

Snel & eenvoudig.

Als ik de vraag nog eens lees snap ik niet wat je precies wilt bereiken. Je creeert random 10 getallen die niet gekozen mogen worden om vervolgens random een te kiezen die wel gekozen mag worden?
Ik heb een een veld van 6 bij 6 vakjes waar 4 vakjes uit gekozen moeten worden. Om een vakje heen zijn 4 aangrenzende vakjes daar mag geen vakje naast bij plaatsing van een nieuw vakje.

Vaag verhaal maar ik gebruik het om een soort van map te maken zoals bij travian en zo de dorpen gelijk matig te verdelen.

Ik ga met jullie oplossingen aan de slag! Bedankt alvast.

Reageren