JavaScript (ES6), 78 75 bytes
x=>x.map(y=>y.map(z=>+s.splice(Math.random()*s.length,1)),s=eval(`[${x}]`))
This is the first time I can remember using .splice()
in a code-golf challenge...
You can golf off two bytes by sortingshuffling the array beforehand:
x=>x.map(y=>y.map(z=>s.pop()),s=eval(`[${x}]`).sort(_=>Math.random()-.5))
However, this seems to put the last integer first the majority of the time, so I'm going to assume that the integers aren't uniformly distributed.