The normal distribution is the most commonly used probability distribution in statistics. It is Symmetrical and Bell-shaped. If we create a plot of the normal distribution, it will look something like this:

Normal Distribution is a probability distribution where the probability of x is highest at the center and lowest at the ends.
PyTorch has a number of built-in distributions. You can build a tensor of the desired shape with elements drawn from a distribution. Use the torch.distributions package to generate samples from different distributions.
For example, try the following sample code to sample a 2d PyTorch tensor of size [a,b]
from a Normal distribution.
import torch
m = torch.distributions.normal.Normal(torch.tensor(0.0), torch.tensor(1.0))
m.sample(sample_shape=(10,2)) # normally distributed with loc=0 and scale=1
#output
tensor([[-0.8596, 0.4606],
[ 0.5337, -0.5248],
[ 0.0535, -0.2472],
[-1.5757, -0.3661],
[-0.8937, -1.4933],
[ 0.5081, 0.9339],
[-0.8493, 0.9772],
[-0.0069, -0.2202],
[ 0.0538, -1.4181],
[ 1.0918, 0.8666]])
Creates a normal or Gaussian distribution parameterized by loc
: the mean of the distribution and scale
: the standard deviation of the distribution.sample()
generates a sample_shape
of the sample.
Uniform Distribution
The uniform distribution is a probability distribution in which every value between an interval from a to b is equally likely to occur. It has Symmetrical and Rectangular-shaped. If we create a plot of the uniform distribution, it will look something like this:

Uniform distribution is a probability distribution where the probability of x is constant. Let’s create a matrix of dimension 10 × 2, filled with random elements samples from the Uniform distribution parameterized by low = 0.0 and high = 5.0.
m = torch.distributions.uniform.Uniform(low=torch.tensor([0.0]),high=torch.tensor([5.0]))
m.sample(sample_shape=(10,2)).numpy() # uniformly distributed in the range [0.0, 5.0)
Generates uniformly distributed random samples from the half-open interval.
- low – lower range (inclusive).
- high – upper range (exclusive).
Plot Uniform Distribution
import seaborn as sns
sns.set()
m = torch.distributions.uniform.Uniform(low=torch.tensor([0.0]),high=torch.tensor([5.0]))
uniform_dis=m.sample(sample_shape=([100000])).numpy() # uniformly distributed in the range [0.0, 5.0)
sns.displot(uniform_dis, kind='kde')
Both distributions are symmetrical. That is, if we were to draw a line down the distribution’s center, the distribution’s left and right sides would perfectly mirror each other.