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