Luaで円周率を求める方法


  1. レーマンの方法: レーマンの方法は、円周率を無限級数として近似する方法です。以下は、Luaでこの方法を実装した例です。
function calculatePiLeibniz(iterations)
  local pi = 0
  local sign = 1
  for i = 0, iterations do
    local term = 1 / (2 * i + 1)
    pi = pi + sign * term
    sign = -sign
  end
  return pi * 4
end
local iterations = 1000000
local pi = calculatePiLeibniz(iterations)
print("Pi =", pi)
  1. モンテカルロ法: モンテカルロ法は、確率と統計の手法を使用して円周率を推定する方法です。以下は、Luaでこの方法を実装した例です。
function calculatePiMonteCarlo(samples)
  local insideCircle = 0
  local total = 0
  for i = 1, samples do
    local x = math.random()
    local y = math.random()
    local distance = math.sqrt(x * x + y * y)
    if distance <= 1 then
      insideCircle = insideCircle + 1
    end
    total = total + 1
  end
  return (insideCircle / total) * 4
end
local samples = 1000000
local pi = calculatePiMonteCarlo(samples)
print("Pi =", pi)