# JavaScript (ES6), <s>78</s> 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 sorting 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.