Loading [MathJax]/jax/output/HTML-CSS/jax.js

Atividade 02 – Cálculo de PI

Inicialmente, você vai alterar qualquer um dos objetos de jogo previamente definidos, inserindo alguns atributos públicos e alterando também o método Update(). Pode-se fazer a alteração, por exemplo, no objeto GameManager.

Insira os atributos pi, c e t para armazenarem respectivamente o valor de π, o número de pontos dentro do círculo e o número total de pontos gerados. Deixe-os públicos para poder ver seus valores enquanto a simulação é executada.

Você precisará usar também o mecanismo de geração de números aleatórios da linguagem C#. Opte em usar essa linguagem, e não o que o Unity fornece, para usar o tipo double e ter uma precisão maior.

No método Update(), você gerou duas coordenadas (x e y) com valores entre -1 e 1. Ou seja, as coordenadas definem um ponto dentro de um quadrado de lado de tamanho 2. Verifique depois se a distância desse ponto para o centro do quadrado (0, 0) é menor ou igual a 1. Se for, é porque o ponto encontra-se dentro do círculo inscrito dentro do quadrado, pois a distância é menor ou igual ao seu raio. Nesse caso, o contador c precisa ser incrementado. O contador t é incrementado a cada atualização, uma vez que um novo ponto é testado a cada chamada do método, e pi é calculado a partir dos contadores mencionados. O Código 06 mostra os detalhes da solução.

x
1
    public class GameManager : MonoBehaviour {
2
        ...
3
        public double pi;
4
        public int c = 0;
5
        public int t = 0;
6
        private System.Random rnd;
7
8
        void Start () {
9
            ...
10
        rnd = new System.Random();
11
        }
12
13
        public void Update() {
14
            double x = 2 * rnd.NextDouble() - 1;
15
            double y = 2 * rnd.NextDouble() - 1;
16
            if (Math.Sqrt(x*x + y*y) <= 1)
17
                c++;
18
            t++;
19
            pi = 4 * (double) c / t;
20
        }
21
    }
22
    

Execute o programa com o objeto GameManager selecionado e você verá o valor de pi convergindo paulatinamente para 3,14. Note que, para convergir, é necessário realizar milhares de chamadas do método Update() (no meu teste, o valor convergiu para 3,14 quando o contador t estava na casa de 15.000). Quanto mais pontos gerar, mais precisa será a probabilidade calculada e, consequentemente, mais casas decimais definidas você encontrará para o valor de π.

Versão 5.3 - Todos os Direitos reservados