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.