100.000 Mal random 4 mit floor, ceil und round ergibt folgende Verteilung:
Gesamt (random 4): 100000
floor:
0: 24971
1: 24903
2: 25055
3: 25071
4: 0
ceil:
0: 0
1: 24971
2: 24903
3: 25055
4: 25071
round:
0: 12601
1: 24794
2: 24917
3: 25212
4: 12476
Rechenzeit: 26 Sekunden
Zu beachten die Werte von round bei 0 und 4!
Somit ist floor ideal für den Index von Arrays.
Wer sich spielen will, hier das Test-Skript:
Random_Test.sqf
Code:
// Test von random mit floor, ceil und round
_Ges = 0;
_ZaF = 0;
_ZbF = 0;
_ZcF = 0;
_ZdF = 0;
_ZeF = 0;
_ZaC = 0;
_ZbC = 0;
_ZcC = 0;
_ZdC = 0;
_ZeC = 0;
_ZaR = 0;
_ZbR = 0;
_ZcR = 0;
_ZdR = 0;
_ZeR = 0;
_time = time;
while {_Ges < 100000} do
{
_Ges = _Ges+1;
_Zahl = random 4;
switch (floor _Zahl) do
{
case 0:{_ZaF=_ZaF+1};
case 1:{_ZbF=_ZbF+1};
case 2:{_ZcF=_ZcF+1};
case 3:{_ZdF=_ZdF+1};
case 4:{_ZeF=_ZeF+1};
};
switch (ceil _Zahl) do
{
case 0:{_ZaC=_ZaC+1};
case 1:{_ZbC=_ZbC+1};
case 2:{_ZcC=_ZcC+1};
case 3:{_ZdC=_ZdC+1};
case 4:{_ZeC=_ZeC+1};
};
switch (round _Zahl) do
{
case 0:{_ZaR=_ZaR+1};
case 1:{_ZbR=_ZbR+1};
case 2:{_ZcR=_ZcR+1};
case 3:{_ZdR=_ZdR+1};
case 4:{_ZeR=_ZeR+1};
};
};
_ergebnis = format["Gesamt (random 4): %1\n\nfloor:\n0: %2\n1: %3\n2: %4\n3: %5\n4: %6\n\nceil:\n0: %7\n1: %8\n2: %9\n3: %10\n4: %11\n\nround:\n0: %12\n1: %13\n2: %14\n3: %15\n4: %16\n\nRechenzeit: %17 Sekunden",
_Ges,_ZaF,_ZbF,_ZcF,_ZdF,_ZeF,_ZaC,_ZbC,_ZcC,_ZdC,_ZeC,_ZaR,_ZbR,_ZcR,_ZdR,_ZeR,floor(time-_time)];
hint _ergebnis;
copyToClipboard _ergebnis;
Player groupChat "Ergebnis ins Clipboard kopiert!"