add roll-on function to roll on tables with full bounds checking