#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 17 15:35:10 2024

@author: sam
"""

import numpy as np

def f(x):
    return np.sin(x)**2

def montyn(f,a,b,N): # same as last question
    U = np.random.uniform(a,b,N)
    I = 0
    for i in range(len(U)):
        I += f(U[i])
    I *= (b-a)/len(U)
    return I



print(montyn(f,0,np.pi,10000))