Показать сообщение отдельно
Старый 31.07.2009, 13:45
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
var r:Number = Math.random();
if (r >= .6)
	trace("40%");
else if (r >= .3)
	trace("30%");
else if (r >= .1)
	trace("20%");
else
	trace("10%");
 
// или так
var array:Array = [ 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 ];
var n:Number = array[Math.floor(10 * Math.random())];
trace(n + "0%");
 
// еще идея
var array:Array = [ .1, .3, .6, 1 ];
var length:Number = array.length;
var r:Number = Math.random();
for (var i:Number = 0; i < length; i++)
{
	if (r < array[i])
	{
		var n:Number = i + 1;
		break;
	}
}
trace(n + "0%");
Последний вариант для решения задачи в общем случае больше подходит чем другие, наверное. Какие еще варианты есть для решения в общем случае?? Т.е. есть N событий, и за раз может наступить одно из них с определенной вероятностью.