Код с вашей функцией:

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
private var _zeros: int = 0;
private var _ones: int = 0;
private var _twos: int = 0;
private var _threes: int = 0;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
for (var j:int = 0; j < 10; j++ ) {
_zeros = 0;
_ones = 0;
_twos = 0;
_threes = 0;
for (var i:int = 0; i < 10000; i++) {
var rand:int = randExp();
if (rand == 0) _zeros++;
else if (rand == 1) _ones++;
else if (rand == 2) _twos++;
else if (rand == 3) _threes++;
}
trace("zeros: " + _zeros, "ones: " + _ones, "twos: " + _twos, "threes: " + _threes);
}
}
private function randExp(c:int = -1,c1:int = -1):int {
var t:int = Math.floor(Math.random() * 4);
return (t == c || t == c1)?randExp(c, c1):t;
}
}
}
Трейс:
zeros: 2481 ones: 2619 twos: 2444 threes: 2456
zeros: 2518 ones: 2515 twos: 2515 threes: 2452
zeros: 2513 ones: 2517 twos: 2503 threes: 2467
zeros: 2506 ones: 2462 twos: 2560 threes: 2472
zeros: 2535 ones: 2474 twos: 2477 threes: 2514
zeros: 2470 ones: 2533 twos: 2541 threes: 2456
zeros: 2503 ones: 2448 twos: 2539 threes: 2510
zeros: 2532 ones: 2478 twos: 2445 threes: 2545
zeros: 2611 ones: 2406 twos: 2418 threes: 2565
zeros: 2583 ones: 2475 twos: 2432 threes: 2510
Не вижу проблемы с распределением нулей - все значения примерно поровну.