Develop a function to simulate a normal distribution and provide a visual plot of it.,
Crack Every Online Interview
Get Real-Time AI Support, Zero Detection
This site is powered by
OfferInAI.com Featured Answer
Question Analysis
The question asks you to develop a function that simulates a normal distribution and to create a visual plot of it. This involves two primary tasks:
-
Simulate a Normal Distribution:
- A normal distribution, also known as a Gaussian distribution, is a probability distribution that is symmetric about the mean. It is characterized by its bell-shaped curve.
- To simulate a normal distribution, you typically need two parameters: the mean (average) and the standard deviation (which measures the spread or dispersion of the dataset).
- The task involves generating random numbers that conform to these parameters.
-
Visual Plot:
- Once the normal distribution is simulated, you need to visualize it using a plot. This can be achieved using a plotting library that can render the bell curve of the normal distribution.
Answer
To solve this problem, we can use Python along with libraries like numpy
for generating the normal distribution and matplotlib
for plotting it. Below is a step-by-step solution:
import numpy as np
import matplotlib.pyplot as plt
def simulate_normal_distribution(mean=0, std_dev=1, num_samples=1000):
"""
Simulates a normal distribution and plots it.
:param mean: Mean of the normal distribution.
:param std_dev: Standard deviation of the normal distribution.
:param num_samples: Number of samples to generate.
"""
# Generate random data following a normal distribution
data = np.random.normal(loc=mean, scale=std_dev, size=num_samples)
# Plotting the data
plt.figure(figsize=(8, 6))
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
# Plotting the probability density function (PDF)
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = (1 / (np.sqrt(2 * np.pi) * std_dev)) * np.exp(-((x - mean) ** 2) / (2 * std_dev ** 2))
plt.plot(x, p, 'k', linewidth=2)
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()
# Example usage:
simulate_normal_distribution(mean=0, std_dev=1, num_samples=1000)
Explanation:
- Simulate Normal Distribution: We use
numpy.random.normal()
to generatenum_samples
random data points that follow a normal distribution with a specifiedmean
andstd_dev
. - Plotting: We use
matplotlib.pyplot
to create a histogram of the generated data, which represents the distribution. We also plot the theoretical probability density function (PDF) overlaying the histogram to illustrate the normal distribution curve.
This function provides a visual plot of the simulated normal distribution, showcasing the characteristic bell curve of the distribution.