Make Object pick random Vector3.Reflect

Hello this is Mahsa,

Case 1 :

I Have object (inside) a cube , and I want it when the game starts, start to move toward wall inside the cube, and when Collide with the wall of the cube uses Vector3.Reflect and pick random angle and goes toward that new angle and so on…

Case 2 :

I Have object (inside) a cube , and I want it when the game starts, start to move toward wall inside the cube, and when Collide with the wall of the cube and pick random angle and goes toward that new angle and so on…

yellow can be random angle

Question

How to choose random angles depend on where the object hit the wall and when I choose the angle (randomly) how can I move towards that angle and so on (constantly).

Please help thank you

Assuming this is a RigidBody:

[SerializeField] Rigidbody _rigidbody;

void OnCollisionEnter ( Collision collision )
{
    Vector3 collisionNormal = collision.contacts[0].normal;
    float spread = 45;// degrees
    Vector3 randomizedNormal = Quaternion.Euler( Random.Range(-spread,spread) , Random.Range(-spread,spread) , Random.Range(-spread,spread) ) * collisionNormal;
    _rigidbody.velocity = randomizedNormal * _rigidbody.velocity.magnitude;
}