Random Numbers in Unity3D?

The simple solution would be to just use .NET's Random class, which happens to be in the System namespace:

using System;

...

//Or System.Random without the using
Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 5);

If you want to use Unity's, call Range instead of Next:

int directionChoice = randomDirection.Range(1, 5);

Note that "max" is exclusive in both cases, so you should use 5 to return values between 1 and 4 (including 4)

To get random float:

Random.NextDouble(); //careful, this is between 0 and 1, you have to scale it
//Also, this one is exclusive on the upper bound (1)

Random.Range(1f, 4f); //max is inclusive now

In Unity C# the method is as follows

Random.Range(minVal, maxVal);

See Unity Documentation - Random

The method will accept either integer or float arguments. If using ints minVal is inclusive and maxVal is exclusive of the returned random value. In your case it would be:

Random.Range(1,4);

Instead of Next(1,4).

If using floats, for example

Random.Range(1.0F, 3.5F);

The return value is also a float, minVal and maxVal are inclusive in this case.