How do i spawn objects in specific locations without overlapping?

I’m trying to make 3 objects spawn in 5 different locations randomly and I got stuck because the clones are overlapping and the random spawn doesn’t stop spawning. I want to make the spawner to spawn the clones in 5 different areas without overlapping and want the spawner to stop when all the areas are full.

Here’s my code.

public Transform[] spawnLocations;
public GameObject[] whatToSpawnClone;
int positionNumber;
int randomInt;


void Update()
{
        SpawnRandom();
}
    void SpawnRandom()
    {
        randomInt = Random.Range(0, whatToSpawnClone.Length);
        Instantiate(whatToSpawnClone[randomInt], spawnLocations[0].position, spawnLocations[0].rotation);
        if (positionNumber == 0)
        {
            Instantiate(whatToSpawnClone[randomInt], spawnLocations[0].position, spawnLocations[0].rotation);
            positionNumber = 1;
        }

        else if (positionNumber == 1)
        {
            Instantiate(whatToSpawnClone[randomInt], spawnLocations[1].position, spawnLocations[1].rotation);
            positionNumber = 2;
        }
        else if (positionNumber == 2)
        {
            Instantiate(whatToSpawnClone[randomInt], spawnLocations[2].position, spawnLocations[2].rotation);
            positionNumber = 3;
        }
        else if (positionNumber == 3)
        {
            Instantiate(whatToSpawnClone[randomInt], spawnLocations[3].position, spawnLocations[3].rotation);
            positionNumber = 4;
        }
        else if (positionNumber == 4)
        {
        Instantiate(whatToSpawnClone[randomInt], spawnLocations[4].position, spawnLocations[4].rotation);
        positionNumber = 0;
        }

    }
}

in update:

if(whatToSpawnClone.Length =< 4){
SpawnObject();
}
else{
Return;
}