Показать сообщение отдельно
Старый 06.11.2011, 19:36
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Сообщение от Lyso Посмотреть сообщение
Для программы необходимо число от 0 до 3. Сделал такого вида рандом -
Код AS3:
var t:uint = Math.floor(Math.random() * 4);
Сделал больше 20 проверок по 10 000 раз, абсолютно всегда ноль выпадает в несколько раз реже остального. Как уравновесить шансы?
Странно, только что проверил:
Код AS3:
package  {
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Randomizer extends Sprite {
 
		private var _zeros:		int = 0;
		private var _ones:		int = 0;
		private var _twos:		int = 0;
		private var _threes:	int = 0;
 
 
		public function Randomizer() {
			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 i:int = 0; i < 10000; i++) {
				var rand:int = int(Math.random() * 4);
				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);
		}
	}
}
трейс выводит:
Цитата:
zeros: 2473 ones: 2503 twos: 2492 threes: 2532
zeros: 2520 ones: 2591 twos: 2433 threes: 2456
zeros: 2573 ones: 2475 twos: 2482 threes: 2470
...
Это можно назвать примерно равными результатами