Показать сообщение отдельно
Старый 05.06.2011, 20:25
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
wvxvw, а зачем ты через целочисленные значения пытаешься вычислить Пи?
Почему не напрямую использовать Math.random() вместо шума [0..255]?

Добавлено через 1 час 18 минут
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
 
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			this.computePI( 1E+06, 1E+07 );
		}
 
 
		///
		private var _txtLog : TextField;
 
 
		///
		public function computePI( radius:Number, iterations:Number=10 ) : void
		{
			var radiusPow2:Number = radius * radius;
			var hits:Number = 0;
			var i:Number = -1;
			while (++i < iterations)
			{
				var rndX:Number = 2.0 * radius * (0.5 - Math.random());
				var rndY:Number = 2.0 * radius * (0.5 - Math.random());
 
				if (rndX * rndX + rndY * rndY <= radiusPow2)
					hits += 1.0;
			}
 
			var rectS:Number = 4.0 * radiusPow2;
			var circS:Number = rectS * hits / iterations;
			var PI:Number = circS / radiusPow2;
 
			this.addLog("PI: " + PI);
			this.addLog("rectS: " + rectS);
			this.addLog("circS: " + circS);
			this.addLog("iterations: " + iterations);
			this.addLog("hits: " + hits);
		}
 
		///
		public function addLog( msg:String ) : void
		{
			if (!this._txtLog)
			{
				this._txtLog = new TextField();
				this._txtLog.x = 10.0;
				this._txtLog.y = 10.0;
				this._txtLog.width = 400.0;
				this._txtLog.height = 300.0;
				this.addChild( this._txtLog );	
			}
 
			this._txtLog.appendText( msg + "\n" );
		}
 
	}
}
Цитата:
PI: 3.1416376
rectS: 4000000000000
circS: 3141637600000
iterations: 10000000
hits: 7854094
как вариант