>>665
そんなことない
一応これはC++のSTLつかってんだけど、どれもとても基本的な関数だからね

おれのやり方だと、まずわかりやすい基本の形として
1000
0100
0010
0001
みたいなのを考える
このデータの持ち方として
int array[4] = { 0, 1, 2, 3 };
とした
最初の要素に1行目の'1'の位置を格納
次の要素に2行目の'1'の位置を格納
って感じね
んで、この配列を好きに並べ替えればいいだけなのよ
>>663でいうと、random_shuffleでランダムに並び替えてるだけ
例えばarray[4] = { 2, 1, 3, 0 };
のときは
0010
0100
0010
1000
って感じになる

もっといい方法あるかもしれんけど