Как подойти к пи по кругу

Я получил задание на поступление на программу «Информатика», где я должен подойти к PI. Чтобы вычислить число пи, мне нужно сделать соотношение между площадью квадрата, круга, общим количеством точек и количеством точек внутри круга.

  • N = общее количество точек
  • M = точки внутри круга
  • Диаметр 400

Формула площади круга

радиус^2 * π или диаметр^2 * π/4

Формула площади квадрата

2*радиус^2 или диаметр^2

I had the formule ( M / N ) * 4

Вот как я это понял:

(d ^ 2 * π / 4) : d ^ 2 = M : N

π / 4 = М / Н

π = (М/Н) * 4

the problem is that I don't get pi as output, but about 14.2..

Кто-нибудь знает, что я делаю неправильно?

Итак, в Processing я написал следующий код

float N = 0;
float M = 0;

void setup()
{
    size(400, 400);
    frameRate(90000); 
    background(255, 255, 255);
    ellipse(200,200,400,400);

}

void draw()
{

    /* Random x- en y-coordinate. */
    float x = random(0,400);
    float dx= (x-200);
    float y = random(0,400);
    float dy = (y-200);
    float d = (float)(Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)));

    /*Red in the circle*/
    if (d <= 200 ){ 
      stroke(255,0,0);
      M++;
    } 
    else{ 
      stroke(0,255,0); /*green around the circle*/
      N++;
    }
    point(x,y);
    println

    ((M/N)*4); 

}

Что такое «вступительное задание»?

nicomp 08.06.2019 17:49

Ваша формула в порядке, но вопреки определению N, ваша N в настоящее время считает только очки не в круге...

TrebledJ 08.06.2019 17:57

Вы получите лучшие результаты, если будете использовать double, а не float. Не используйте pow() для возведения числа в квадрат — просто используйте x*x.

FredK 08.06.2019 20:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
164
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Точки, попадающие внутрь круга, также попадают в квадрат, так как круг лежит внутри квадрата.

Вам нужно сделать 4*M/(M+N).

большое спасибо, но я не совсем понимаю, как вы придумали эту формулу

Liza Darwesh 08.06.2019 18:02

@LizaDarwesh Точки в прямоугольнике (N + M) - Итак, (d^2 * π / 4) : d^2 = M : (N+M).

Rabbid76 08.06.2019 18:10

В настоящее время вы увеличиваете N только тогда, когда точка не попадает в круг. Таким образом, N не представляет общее количество точек. Альтернативой, которую вы могли бы использовать, является сохранение исходной формулы и увеличение N независимо от того, где она находится; вне предложения else.

Heladio Amaya 08.06.2019 18:15

Другие вопросы по теме