Hello I Van, I did what you advised me with a small change:
DynamicModule[{pc, n = 3, qc, m = 3, g, ct = 5},
Column[{
Row[{
Column[{
Slider[Dynamic[n], {1, 8, 1}, Appearance -> "Labeled"],
Slider[Dynamic[m], {1, 8, 1}, Appearance -> "Labeled"]
}],
RadioButtonBar[
Dynamic[ct], {5 -> \[DoubleStruckCapitalZ],
1 -> \[DoubleStruckCapitalQ]}]}
],
pc = Dynamic[
Function[g, Rationalize[g, ct*0.1]] /@
RandomReal[{-10, 10}, n + 1]],
qc = Dynamic[
Function[g, Rationalize[g, ct*0.1]] /@
RandomReal[{-10, 10}, m + 1]],
Dynamic[Grid[{Sequence @@ pc, Sequence @@ qc}, Frame -> All]]
}
]
]
As you noticed, I wrapped the Grid inside a Dynamic. However I still have a problem, the partial results and the final result do not match:

I guess it's due to the call to RandomReal. But I do not know how to make them match, any use of pc or qc will invoke RandomReal again. I appreciate your help