Let's use a more descriptive name.
Change logic of the `Program#Generate()` method.

It's much better to perform your conversion from string to an integer once
and then just pass integers along to methods instead of strings.

Also, the previous implementation would generate 2 passwords for 2-digt
inputs and only return the last one generated. It was inefficient.
Pass integers instead of strings.

Again, there is no need to pass in strings and then perform conversions.
Just pass in integers directly! Then we can access character elements
through the bracket operator [] from strings directly.
Replace `Program#cSet()` with more sensible logic.

Use arrays to our advantage. Here, I'm also using modular arithmetic to
ensure that we stay within bounds.
Change range of random number generation.

So, a note about the `Random#Next(int, int)` method. The min value is
inclusive, that means it may be picked. The max value, however, is
exclusive. That is, it will never get picked. The maximum randomly
generated integer would be maxValue - 1. The reason for this is because in
C# and many other languages, arrays are 0 indexed. That means, the index
of an array starts at 0 and not 1. If you're serious about programming,
you should do your best to wrap your head around this concept because it
is EVERYWHERE!

This is also the reason the previous implementation of `Program#cSet()`
would not return numbers or symbols, because the integer 3 was never
considered; only 0, 1, and 2 were considered.
Clean up logic with password generation.

Replace `Program#cSet()` and `Program#pLenght()` with
`Program#Generate(short)`. Notice that this new method has the same name of
another method. However, it accepts a short (16-bit integer) rather than a
string. So whenever this method is called with a short, it will execute
this one rather than the one that accepts a string. This is a concept
known as overloading.
Move the types array outside as a static member.

Since the types of characters is constant, move it outside to the class
scope and make it static. By doing this, we're not unnecessarily
instantiating the array multiple times.