Volgende code is misschien nog éénvoudiger:
PHP:
1
2
3
4
5
6
| $aKey= array();
$iMax= 10;
for ($iKey=0;$iKey<$iMax;$iKey++)
{
$mysqli->query("INSERT INTO `mytable` SET `value`=".$iMax-$iKey.";");
} |
Het is tenslotte maar wat je onder random verstaat.
Je kan ook met echte randoms werken, maar die zijn tijdconsuming.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| // Init first.
$aRandoms= array();
$iMin= 1;
$iMax= 1000;
for ($i=$iMin;$i<=$iMax;$i++) $aRandoms[$i]=true;
for ($i=$iMin;$i<=$iMax;$i++)
{
$mysqli->query("INSERT INTO `mytable` SET `key`=".$i.", `value`=".getrandom($iMin,$iMax,$i).";");
}
function getrandom($iBottom,$iTop,$iExclude)
{
global $aRandoms;
while ($iReturn===0)
{
$iReturn= rand($iBottom,$iTop);
$iReturn= ($aRandoms[$iReturn]?($iReturn===$iExclude?0:$iReturn):0);
}
$aRandoms[$iReturn]=false;
return $iReturn;
} |
Of de zelde code geoptimaliseerd:
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
| // Init first.
$aRandoms= array();
$iMin= 1;
$iMax= 1000;
for ($i=$iMin;$i<=$iMax;$i++) $aRandoms[$i]=$i;
for ($i=$iMin;$i<=$iMax;$i++)
{
$mysqli->query("INSERT INTO `mytable` SET `key`=".$i.", `value`=".getrandom($i).";");
}
function getrandom($iExclude)
{
global $aRandoms;
// bepaal size van de array
$iTop= count($aRandoms);
if ($iTop===1)
{
$iReturn= 1;
unset($aRandoms[$iReturn]);
}
else
{
if ($iTop===0)
{
$iReturn=0;
}
else
{
$iReturn=$iExclude;
while ($iReturn===$iExclude)
{
$iReturn= $aRandoms[rand(2,$iTop)];
}
$aRandoms[$iReturn]= $aRandoms[$iTop];
unset($aRandoms[$iTop]);
}
}
return $iReturn;
} |
De werking is als volgt:
$aRandoms is een array bijvoorbeeld: 1 2 3 4 5 6 7 8 9 10
De eerste pass is getrandom(1) en geeft een waarde van 2 tot en met 10 terug. Bijvoorbeeld 6.
$aRandoms is nu een array: 1 2 3 4 5 10 7 8 9
De tweede pass is getrandom(2) en geeft een waarde tussen 2 en 10 terug. Bijvoorbeeld 10.
$aRandoms is nu een array: 1 2 3 4 5 9 7 8
De derde pass is getrandom(3) en geeft een waarde tussen 2 en 9 terug. Bijvoorbeeld 2.
$aRandoms is nu een array: 1 8 3 4 5 9 7
Pass 4: getrandom(4) geeft 5: $aRandoms is 1 8 3 4 7 9
Pass 5: getrandom(5) geeft 9: $aRandoms is 1 8 3 4 7
Pass 6: getrandom(6) geeft 4: $aRandoms is 1 8 3 7
Pass 7: getrandom(7) geeft 8: $aRandoms is 1 7 3
Pass 8: getrandom(

geeft 3: $aRandoms is 1 7
Pass 9: getrandom(9) geeft 7: $aRandoms is 1
Pass 10: getrandom(10) geeft 1: $aRandoms is empty
Sneller kan bijna niet.
[
Voor 67% gewijzigd door
Wim-Bart op 22-10-2005 03:15
]
Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.