Я сэр, а не сир!Code
globals
constant group udg_G = CreateGroup()
unit RandomUnit_u
integer RandomUnit_i
endglobals
function RandomUnit_filter takes nothing returns boolean
local unit u = GetFilterUnit()
if true then //Условие отбора
set RandomUnit_i = RandomUnit_i + 1
if GetRandomInt(1, RandomUnit_i) == 1 then
set RandomUnit_u = u
endif
set u = null
return true
endif
set u = null
return false
endfunction
function Example takes nothing returns nothing
set RandomUnit_i = 0
set RandomUnit_u = null
call GroupEnumUnitsInRect(udg_G, bj_mapInitialPlayableArea, Filter(function RandomUnit_filter))
//Действия с RandomUnit_u
endfunction
Если сама группа не нужна, фильтр следует заменить GroupLoop'ом.