For example, if we seed with `rand.Seed(time.Now().UnixNano())` and then another initializer calls `rand.Seed(1)` our seed will get overridden, and that definitely isn’t what we want. By using a `rand.Rand` instance we are able to prevent this from happening to our random number generator.We initialize this variable using the `rand.New()` function, which requires a `rand.Source` as an argument. A source is basically just an object that helps us get randomly distributed numbers using a seed that we provide.If you ever opt to not create a `rand.Rand` object in your code and instead use the methods provided by the `math/rand` package, beware that the default seed value is `1`, so if you forget to seed it you will find that your “random” package is really generating the same sequence of numbers every time you run your application. This also means that if another package were to always seed the `math/rand` package with another number (like `42`), you would also get similarly predictable results every time you restart your applicatoin.To see this in action, try running the following simple program without seeding the `math/rand` package.