Here's how I would do it. This example is untested, but I regularly use the ideas.
First, in the markers that you place, name them Spot1, Spot2, and Spot3.
Then, in your mission init, something like:
private ["_list", "_spot", "_pos", "_loc", "_dir", "_spawn1", "_spawn2", "_spawn3"];
waituntil {!isnil "bis_fnc_init"}; // this is necessary to make sure the functions you use later are initialized
_list = [Spot1, Spot2, Spot3];
_spot = _list call BIS_fnc_selectRandom; // this randomly selects 1 of the 3 elements
_pos = getMarkerPos _spot; // this gets the location of the chosen marker
// spawn 1st grad
_loc = _pos findEmptyPosition [20, 100, "GRAD_RU"]; // this will find an empty spot the size of the Grad within 100m of the marker
_dir = random 360; // random direction
// spawnVehicle spawns the vehicle and a crew
_spawn1 = [_loc, _dir, "GRAD_RU", East] call BIS_fnc_spawnVehicle;
// spawn 2d grad
_loc = _pos findEmptyPosition [20, 100, "GRAD_RU"];
_dir = random 360;
_spawn2 = [_loc, _dir, "GRAD_RU", East] call BIS_fnc_spawnVehicle;
// spawn 3rd Grad
_loc = _pos findEmptyPosition [20, 100, "GRAD_RU"];
_dir = random 360;
_spawn3 = [_loc, _dir, "GRAD_RU", East] call BIS_fnc_spawnVehicle;
If you wanted to get tricky, you could also spawn a protective group of guards.