That code is silly. You don't need to put things in a vector to random_shuffle them. Try replacing "v.begin()" with "a1" and "v.end()" with "a1+10".
On topic, if you just had "int a1[10][10]" it would be simple. For multidimensional vectors, not so simple. It can be done, but I have a feeling that you don't really need an MD array here at all.
You would random_shuffle( a1[0], a1[0]+100 );. There is a million other way to write the same thing. That this corks because a1[10][10], unlike a vector, is stored an contiguous memory, so it can be treated like a one dimensional array.
Note that if you only use a 2d array for the [][] syntax, you might have less problems with a 1d array.