In[1]:= m = 2*RandomInteger[{0, 1}, {10, 10}] - 1
Out[1]= {{1, 1, -1, -1, -1, -1, 1, -1, 1, 1},
{-1, -1, 1, -1, -1, -1, -1, 1, 1, -1},
{-1, -1, 1, -1, 1, 1, 1, 1, -1, 1},
{1, 1, -1, 1, -1, -1, -1, 1, -1, -1},
{1, -1, 1, 1, 1, -1, 1, -1, 1, 1},
{-1, 1, 1, -1, -1, -1, -1, 1, 1, 1},
{-1, -1, 1, 1, 1, 1, -1, 1, -1, 1},
{-1, -1, -1, 1, -1, -1, -1, -1, -1, 1},
{1, -1, 1, 1, 1, 1, -1, 1, -1, 1},
{-1, -1, -1, 1, -1, 1, 1, -1, -1, 1}}
In[2]:= flip[m_, p_] := Module[{vm = m, v},
v = RandomChoice[Range[100] - 1, p];
For[i = 1, i <= p, i++,
vm[[Quotient[v[[i]], 10] + 1, Mod[v[[i]], 10] + 1]] *= -1
];
vm
];
fm = flip[m, 3] (* flip 3% *)
Out[3]= {{1, 1, -1, -1, -1, -1, 1, -1, 1, 1},
{-1, -1, 1, -1, -1, -1, -1, 1, 1, -1},
{-1, -1, 1, -1, 1, 1, 1, 1, -1, 1},
{1, 1, -1, 1, -1, -1, -1, 1, -1, -1},
{1, -1, 1, 1, 1, -1, 1, -1, 1, 1},
{-1, 1, 1, -1, -1, -1, -1, 1, 1, 1},
{-1, -1, 1, 1, -1, 1, -1, 1, -1, 1},
{-1, -1, -1, 1, -1, 1, -1, -1, -1, 1},
{1, -1, 1, 1, 1, 1, -1, 1, -1, 1},
{-1, 1, -1, 1, -1, 1, 1, -1, -1, 1}}
In[4]:= MapThread[#1-#2&, {m, fm}] (*subtract matricies to hilight changes*)
Out[4]= {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, -2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -2, 0, 0, 0, 0, 0, 0, 0, 0}}
Alternate method using * for pairwise element multiply, not vector dot product
flip[m_, p_] := Partition[
Flatten[m]*RandomSample[Join[Table[-1, {p}], Table[1, {100-p}]]], 10];