input: Write a function to generate a voltage signal with random noise and return the signal. The signal should be of a given frequency and amplitude, and the noise should be normally distributed with a mean of 0 and a standard deviation of 0.1. The function should use numpy to create the signal.
  
  import numpy as np 
  
  def generate_noisy_signal(frequency, amplitude, duration, num_samples):
      t = np.linspace(0, duration, num_samples)
      voltage_signal = amplitude * np.sin(2 * np.pi * frequency * t) + np.random.normal(0, 0.1, num_samples)
      return voltage_signal
  
  assert np.array_equal(generate_noisy_signal(250, 1, 1, 1000).shape, (1000,))
  assert abs(np.mean(generate_noisy_signal(250, 1, 1, 1000))) < 0.1
  assert abs(np.max(generate_noisy_signal(250, 1, 1, 1000)) - 1.1) < 0.2
output: def generate_noisy_signal(frequency, amplitude, duration, num_samples):
      t = np.linspace(0, duration, num_samples)
      voltage_signal = amplitude * np.sin(2 * np.pi * frequency * t) + np.random.normal(0, 0.1, num_samples)
      return voltage_signal