криво будет если исключение вне диапазона, а для краев и отрицательных нормально, или я чего-то упустил?

Код AS3:
public function Main():void
{
trace(test(-3));// 0,1660,1706,1649,1651,1652,1682
trace(test(0));// 1693,1650,1720,0,1611,1633,1693
trace(test(3));// 1642,1608,1681,1662,1702,1705,0
}
private function test(exept:int):Array
{
var res:Array = [0, 0, 0, 0, 0, 0, 0];
var n:int = 1e4;
for (var i:int = 0; i < n; i++)
{
res[3 + random( -3, 3, exept)]++;
}
return res;
}
public function random(min:int, max:int, except:int):int
{
if (Math.random() < (except - min) / (max - min))
{
return min + int(Math.random() * (except - min));
}
else
{
return max - int(Math.random() * (max - except));
}
}