Random.Range isn't random for some reason

I want to generate a random vector3 from the list and it always wants to go up and right, is there any fix for this

using UnityEngine;

public class TreeGenerator : MonoBehaviour
{
    void Awake()
    {
        Invoke("GenerateBranch", 0.001f);
        
    }
    void GenerateBranch()
    {
        Vector3[] randomOffset = {
            Vector3.left,
            Vector3.right,
            Vector3.up,
            Vector3.down
        };
        Vector3 offset = randomOffset[(int)Mathf.Round(Random.Range(0f, 3f))];
        Instantiate(gameObject, transform.position + offset, Quaternion.identity);
    }
}

Yes there is. The problem is that you use float instead of int and round the result afterwards. This way the probability for the result to be 1 or 2 is higher than 0 or 3.

Why is that? Because there is a range of 1 for 1 and 2 for which this result is the outcome but only a range of 0.5 for 0 and 3. → that way 1 and 2 are 2 times as likely to occur.

To fix it simply use integers:

 Vector3 offset = randomOffset[Random.Range(0, 4)];