This is how I often do this - I add sets of objects somewhere off-screen on the layout. Each set is in a yellow block:
Then on start of the layout I generate level by picking a random block and adding all objects from it:
I'm using a family "Objects" with just one member "Object" to simplify picking, but you can do this in a different way - by calling a function for example.
After that I delete all original object instances and blocks.
If you game is an infinite runner, generating a very long level in advance is probably not a good idea. You can use the same method to add blocks as players progress through the level.