Показать сообщение отдельно
Старый 30.01.2012, 09:18
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 1  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от fish_r Посмотреть сообщение
А если except === max || except === min работать будет криво, а ещё ряд может быть сдвинут частично в отрицательный диапазон ..
криво будет если исключение вне диапазона, а для краев и отрицательных нормально, или я чего-то упустил?
Код 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));
	}
}