monomialList[vars_List,m_Integer?NonNegative]:=Flatten[Map[Apply[Times,vars^#]&,Table[FrobeniusSolve[ConstantArray[1,Length[vars]],k],{k,0,m}],{2}]]
randPoly2[deg_]:= 
( l=monomialList[ {x,y}, deg];
Total[RandomInteger[{-10,10}]*# &/@ l]
)
randPoly3[deg_]:= 
( l=monomialList[ {x,y,z}, deg];
Total[RandomInteger[{-10,10}]*# &/@ l]
)

Panel[
DynamicModule[ {deg=1, f=1}, 
Column[{
Row[{"Degree ", Dynamic[deg], Slider[Dynamic[deg],{1,10,1}], Dynamic[Button["New surface", 
f=randPoly3[deg];]]}],
Dynamic[ContourPlot3D[f==0, {x, -10, 10}, {y, -10, 10}, {z,-10,10}, Mesh->False, PlotPoints-> 60, ImageSize->Large]],
Dynamic[f]
},  Center, ItemSize->{100,Automatic}]
]
]