Random Values Seem Identical?

In my breakout clone I’m trying to split the ball, at which point they assume random directions to move in. This direction is decided in the Start() of each ball instance. Upon observation is seems that the more balls I split, the more obvious it becomes that all balls move in the same direction, towards the upper-right corner of the screen. Can anyone help? Why are the values the same every time the balls split? This is my code:

// Use this for initialization
	void Start () 
	{
		ballRB = transform.rigidbody;
		direction = new Vector3(0,1,0);

		//If there's only one ball in the field, being this current one, the default up motion should be used.
		if (GameObject.Find("StartBall").GetComponent<StartBall>().numBalls <= 1) ballRB.AddForce(direction*1000f, ForceMode.Force);
		//If not, there are more balls, which means the player split the ball. A random direction should be used in this case.
		else ballRB.AddForce(GenerateRandomDirection(), ForceMode.Force);

	}
	

	Vector2 GenerateRandomDirection()
	{
		int randX = Random.Range(0,360);
		int randY = Random.Range(0,360);
		randDirection = new Vector2(randX, randY);
		return randDirection;
	}

It’s because in Vector2 GenerateRandomDirection() you are only assigning positive numbers to the x and y components of the force vector.

You are assigning them values from 0-360 which makes me think you are confusing vectors with angles.

If you add a force of Vector2(1, 1); it will make the ball travel towards the positive end of world x- axis and y-axis (presumably top right). A Vector2(-1, -1); would make it travel to the opposite direction (bottom left).

If you want the magnitude of the force (and thus resulting speed) to be equal for every ball, you should do something like

     Vector2 GenerateRandomDirection()
     {
         float randX = Random.Range(-1f,1f);
         float randY = Random.Range(-1f,1f);
         // speed is a float variable to get the desired speed
         randDirection = new Vector2(randX, randY).normalized * speed; 
         return randDirection;
     }

EDIT
@Scribe s solution with InsideUnitCircle is even better

Vector2 GenerateRandomDirection()
{
    return Random.insideUnitCircle.normalized * speed;
}