Generating random numbers while being blind to the method Let's say you needed to generate a set of random numbers while having no idea how the numbers are generated or what the underlying distribution is. Maybe you're testing out a process that fits a variety of distributions to a set of data, and can't have pre-knowledge of the mean, standard deviation, or which distribution the random data belongs to.
Typing
rnorm(20,mean=3,sd=2)

into R gives you 20 random numbers from a normal distribution with mean 3 and sd 2. So you know what the mean and sd of the sample ought to be.
You can kick the can a bit further down the road by typing
rnorm(20 , mean=rnorm(1,mean=0,sd=2) , sd=rlnorm(1,mean=1,sd=1))

Now you don't know what the mean and sd are but you have a decent idea of where they could be. (in the example above, there's 95% chance of the mean falling between -4 and 4). Furthermore, you still know it's going to be a normal distribution

You can take this further by randomly using different distributions. A code example in R might be:
generate_random_dist <-function(n,a,b){

k <-sample(1:5,1)   #picks a random number between 1 and 5

if(k == 1){
    rnorm(n,a,b)    # randomly chosen from the normal distribution, with mean=a and sd=b 
} else if (k == 2){
    runif(n,a,b)    # uniform distribution between a and b
} else if (k == 3){
    rlnorm(n,a,b)   # lognormal distribution with log-mean=a and log-sd=b
} else if (k == 4){
    rpois(n,lambda=a)   # poisson distribution with lambda=a
} else {
    rt(n,b) + a     # t - distribution with b degrees of freedom and centre a
    }
}

A <-rnorm(1,mean=3,sd=4)
B <-rlnorm(1)

generate_random_dist(50,2,2) 

This is better, but still not truly ideal, as I've only chosen from one of 5 methods to generate them, and I know the odds of getting a Poisson distribution are 1 in 5 and the odds of getting an exponential distribution are nil because I didn't code it in.
Furthermore, most real life data don't fit neatly into a given distribution as the process that generates such data is much more complex and less mathematically pure than the processes behind the canonical distributions. 
How can I write a method for the generation of random numbers where I have as little prior information about their generation as possible? Is such a feat even possible? Or is the best approach to get someone else to do it and have them not tell you how they generated those numbers? 
 A: I think I understand the premise of your question, however how would you quantify the "surprise" as you put it.
Regardless, one naive solution you have allowed, from the two first examples you give, since you have defined the second method being "better" than the first, is simply a recursive call on nested rnorm's. You can do this an arbitrary number of times through recursion to produce an unbounded descent of better models, since you have defined adding RV's to parameters of other RV's produces more of a "surprise".
As an example, check out this code:
generate_random_dist <- function(n, n_mean, n_sd, ln_mean, ln_sd){

    i <- 0
    chng_mean <- rnorm(1,n_mean,n_sd)
    chng_sd <- rlnorm(1, ln_mean, ln_sd)
    chng_mean_of_sd <- rlnorm(1, ln_mean, ln_sd) # we cannot use the normal mean 
                                                 # as it isn't necessarily > 0
                                                 # this solution just calls another lognorm
    while (i<n){

        chng_mean <- rnorm(1,chng_mean,chng_sd)                 # recursively generate new
        chng_mean_of_sd <- rlnorm(1,chng_mean_of_sd, chng_sd)   # means and sd's
        chng_sd <- rlnorm(1,chng_mean_of_sd, chng_sd)           # with previously generated
                                                                # random means and sd's
        i <- i + 1

    }

    return rnorm(1,chng_mean, chng_sd)    # returns an rnorm who's mean and sd
                                          # are RV's whose mean's and sd's
                                          # are RV's etc., up to n times.

}

I have simply made a recursive call of your "better" solution. You could extend this even further by applying it to all known distributions that are able to be sampled in R. Then sample through these distributions like in your third example, however again, "surprise" can always be increased simply by increasing the number of recursions.
