one way
First@Last@Reap@Do[Do[If[j*RandomReal[] > 1/2, Sow@{i, i^2, i^3}; Break[]], {j, 1, 9, 1}], {i, 1, 3, 1}] (*{{1, 1, 1}, {2, 4, 8}, {3, 9, 27}}*)
That works very nicely. It looks to me like Reap/Sow is a great way when table won't work (as it doesn't for me in this instance). Concise, and functional, thanks!