Вычисление числа Пи методом монте-карло. В чем ошибка? - VB

Узнай цену своей работы

Формулировка задачи:

Требуется создать программку для вычисления числа Пи методом монте-карло. Суть заключается в следующем: генерируются 2 случайных числа А и В, равномерно распределенных в интервале (-1,1). Если выполняется условие А^2+B^2 <= 1, то точка с координатами (А,В) попадает внутрь круга радиусом 1 с центром в начале координат, если нет, то не попадает. Если при N испытаниях получится n попаданий в круг, то приближенно число Пи можно вычислить по формуле Pi = 4*n/N. Была сделана вот такая программка:
Листинг программы
  1. Dim n, m As Integer, s, pi As Double
  2. Private Sub Command1_Click()
  3. s = Text1.Text
  4. pi = 0
  5. Do Until m = s
  6. x = Rnd * 2 - 1
  7. y = Rnd * 2 - 1
  8. If (x * x + y * y) <= 1 Then
  9. Picture1.PSet (x, y), vbRed
  10. n = n + 1
  11. Else
  12. Picture1.PSet (x, y), vbBlue
  13. m = m + 1
  14. End If
  15. Loop
  16. pi = n/m
  17. Text2.Text = pi
  18. End Sub
Из формулу была убрана 4, с ней число Пи равно 15, ... По идее если сделать N = 10000 (s = 10000), то число Пи будет равно 3,14... В данном случае число Пи равно 3,664. В чем ошибка?

Решение задачи: «Вычисление числа Пи методом монте-карло. В чем ошибка?»

textual
Листинг программы
  1. Dim n&, m&, s&, pi As Double
  2. Picture1.Scale (-1.5, 1.5)-(1.5, -1.5)
  3. Picture1.Cls
  4. s = Text1.Text
  5. m = 0: n = 0
  6. pi = 0
  7. Do Until m = s
  8. x = Rnd * 2 - 1
  9. y = Rnd * 2 - 1
  10. If (x ^ 2 + y ^ 2) <= 1 Then
  11. Picture1.PSet (x, y), vbRed
  12. n = n + 1
  13. Else
  14. Picture1.PSet (x, y), vbBlue
  15. End If
  16. m = m + 1
  17. Loop
  18. pi = 4 * n / m
  19. Text2.Text = pi

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы