Enemy attacking to fast

So I have this enemy there is going to throw stone but I have that one problem that it throws all of it stone at once and I want it to wait between each throw can someone help me?

{
            TargetFinder();

            if (myTarget == null)
                currentTargetDistance = searchRadius;
            else
                Move(myTarget.transform);
            {
                if (currentStones > 0)
                {
                    if (currentTargetDistance <= throwRadius)
                    {
                        DoThrow();
                        MoveSpeed = 0f;
                    }
                }

   void DoThrow()
        { 
            myTarget = null;
            currentTargetDistance = searchRadius;
            Instantiate(Stone, new Vector3(), Quaternion.identity);
            currentStones--;
        }
    }

below is an example of doing CoRoutines.

// New Variable To Introduce
public bool onCooldown = false;
public float cooldownTime = 1f;

// Ensure the target is in range and the throw is not on cooldown
if (currentTargetDistance <= throwRadius && !onCooldown) 
{
	StartCoroutine(ThrowDelayLogic()); // Replace DoThrow() with ThrowDelayLogic()
	MoveSpeed = 0f;
}

// IEnumerator that will wait for x amount of seconds
IEnumerator ThrowDelayLogic () {
	DoThrow();
	onCooldown = true;
	yield return WaitForSeconds (delay);
	onCooldown = false;
}

The best way to delay actions in Unity is through the use of Coroutines, I highly recommend reading up on them if you haven’t already.
You would turn the DoThrow() function into a couroutine, and within it you would have

yield return new WaitForSeconds(time);

Where time is a float that would delay the next cycle by that many seconds.