How to create random movement in 2d

I’m trying to make a very basic circle move randomly within a set of specified parameters in 2d. I’ve found ways to move my circle, but I’m not quite sure how to set specific boundaries for my circle to stay within. Plus I’m not quite sure how to make the object continue to move in a random direction. I’ve tried using vector3.lerp, but I’m not quite sure if it’s right, and if it is, what values to put into where. Suggestions or example code would be greatly appreciated. Thanks.

This script can random move—

enum Type2D {XY,XZ,YZ}
var Type2D : Type2D = Type2D.XY;

var yourMovementObject : Transform;
var randomRate = 1.0;
var moveSpeed = 1.0;
private var RandomX : int;
private var RandomY : int;
private var RandomZ : int;

function Update ()
{
    Invoke("RandomlyMove",randomRate);
    //////////////////////////////////////////////x,y,z/////////////////////////////////////////////////////////////////////////////
    switch (Type2D)
    {
    case Type2D.XY:
        yourMovementObject.Translate(Vector3(RandomX,RandomY,0) * moveSpeed * Time.deltaTime);
		break;
	case Type2D.XZ:
		yourMovementObject.Translate(Vector3(RandomX,0,RandomZ) * moveSpeed * Time.deltaTime,Space.World);
		break;
	case Type2D.YZ:
		yourMovementObject.Translate(Vector3(0,RandomY,RandomZ) * moveSpeed * Time.deltaTime,Space.World);
		break;
    }
}

function RandomlyMove ()
{
    RandomX = Random.Range(-2,2);
    RandomY = Random.Range(-2,2);
    RandomZ = Random.Range(-2,2);
    CancelInvoke("RandomlyMove");
}

Hope it can help you!

It can fixed the move range —

enum Type2D {XY,XZ,YZ}
var Type2D : Type2D = Type2D.XY;

var yourMovementObject : Transform;
var randomRate = 1.0;
var moveSpeed = 1.0;

class MaxPosition
{
    var UpMaxPositionX = 5;
    var DownMaxPositionX = -5;

    var UpMaxPositionY = 5;
    var DownMaxPositionY = -5;

    var UpMaxPositionZ = 5;
    var DownMaxPositionZ = -5;
}

var MaxPosition : MaxPosition;
private var RandomX : int;
private var RandomY : int;
private var RandomZ : int;

function Update ()
{
    Invoke("RandomlyMove",randomRate);
//////////////////////////////////////////////x,y,z/////////////////////////////////////////////////////////////////////////////
   switch (Type2D)
   {
        case Type2D.XY:
            yourMovementObject.Translate(Vector3(RandomX,RandomY,0) * moveSpeed * Time.deltaTime);
            break;
        case Type2D.XZ:
            yourMovementObject.Translate(Vector3(RandomX,0,RandomZ) * moveSpeed * Time.deltaTime,Space.World);
            break;
        case Type2D.YZ:
            yourMovementObject.Translate(Vector3(0,RandomY,RandomZ) * moveSpeed * Time.deltaTime,Space.World);
            break;
    }

    if (yourMovementObject.transform.position.x > MaxPosition.UpMaxPositionX)
	    yourMovementObject.transform.position.x = MaxPosition.UpMaxPositionX;
    else if (yourMovementObject.transform.position.x < MaxPosition.DownMaxPositionX)
	    yourMovementObject.transform.position.x = MaxPosition.DownMaxPositionX;
	
    if (yourMovementObject.transform.position.y > MaxPosition.UpMaxPositionY)
	    yourMovementObject.transform.position.y = MaxPosition.UpMaxPositionY;
    else if (yourMovementObject.transform.position.y < MaxPosition.DownMaxPositionY)
	    yourMovementObject.transform.position.y = MaxPosition.DownMaxPositionY;

    if (yourMovementObject.transform.position.z > MaxPosition.UpMaxPositionZ)
	    yourMovementObject.transform.position.z = MaxPosition.UpMaxPositionZ;
    else if (yourMovementObject.transform.position.z < MaxPosition.DownMaxPositionZ)
	    yourMovementObject.transform.position.z = MaxPosition.DownMaxPositionZ;
}

function RandomlyMove ()
{
    RandomX = Random.Range(-2,3);
    RandomY = Random.Range(-2,3);
    RandomZ = Random.Range(-2,3);
    CancelInvoke("RandomlyMove");
}