thanks for the kind words!
there isn’t a built method without a physical grid, no. on a code freeze at the moment to overhaul the clocking for the upcoming update (Link!), but you could roll your own in the meantime 
function randomize_this_bank(x)
for i = 1,16 do
bank[x][i].rate = math.pow(2,math.random(-2,2))*((math.random(1,2)*2)-3)
bank[x][i].start_point = (math.random(10,30)/10)+(8*(bank[x][i].clip-1))
bank[x][i].end_point = bank[x][i].start_point + (math.random(10,60)/10)
bank[x][i].pan = math.random(-100,100)/100
end
end
(if u wanna get real wild, you can also add bank[x][i].clip = math.random(1,3) to get random buffer assignment and bank[x][i].mode = math.random(1,2) to get randomized Live or Clip)
and then add an OSC call for it in the osc_in function:
elseif path == "/randomize_this_bank_"..i then
randomize_this_bank(i)
and you should be able to set it up in your template! it’ll randomize rate, loop points, and panning for every pad in the bank (which is what the physical grid function does).
there’s also some OSC improvements in the coming norns update that will help you map anything in the PARAMS menu to OSC 