Einzelnen Beitrag anzeigen
Alt 12.10.2012, 16:06   #13 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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!"
Vienna ist offline