How to randomly place objects relative to their parent?

Alright, so I’m attempting to make a grass simulator (exciting, I know) that after something has happened (for now it’s when I press ‘d’ but eventually I’ll make it after a set amount of time passes), a duplicate of the parent ‘grass’ spawns on the world within a 5x5 radius of the parent grass. And then when I do it again, both of them spawn a child within a 5x5 radius of each of them, so that eventually it will fill up most of the ground by sheer proximity spawning.
I’ve got some code that does the spawn bit, but I can’t find anywhere online that uses relative-to-parent spawns
using UnityEngine;

public class GrassCloneScript : MonoBehaviour {

	void Update() {
        if (Input.GetKeyDown(KeyCode.D))
        {
            Instantiate(gameObject, new Vector3(gameObject.x + RandomRange(-2,3), 0.5, gameObject.z + Random.value(-2,3)));

        }
    }
}

I’m also unsure if I should have a failsafe of some kind in there, since after about 5-6 iterations it slows down drastically - should I incluse a script to say ‘if there is already grass here, don’t put grass here’? And how would I do that?

Also, I’ve only been doing this for a handful of days, so very new to this.

Oops, I just saw that I typed the wrong script, that was the one I tried to write myself that didn’t work. This is the one that actually works:
using UnityEngine;

public class GrassCloneScript : MonoBehaviour {

	void Update() {
        if (Input.GetKeyDown(KeyCode.D))
        {
            Instantiate(gameObject);

        }
    }
}