If you know the lengths `Length@grid1 == 6`, `Length@grid2 == 6`, `Length@grid3 == 5`, then you can take advantage of the structure of `Tuples` to brute force this:

    grid1 = {0.1, 0.2, 0.2, 0.3, 0.4, 0.5};
    grid2 = {0.2, 0.3, 0.7, 0.8, 1.1, 1.2};
    grid3 = {0.17, 0.25, 0.35, 0.35, 0.4};
    tuples = Join[Tuples[{grid1, grid2, grid3}],RandomReal[{1, 2}, {6*6*5, 1}],2];

    tuples[[;; ;; (6*6*5)/Length@grid1, 1]]
    tuples[[;; ((6*6*5)/Length@grid1) ;; ((6*6*5)/(Length@grid1 Length@grid2)), 2]]
    tuples[[;; Length@grid3, 3]]

will result in the three grid lists.