Twenty Fifteen has a hook for you to modify the custom background theme_support arguments (documentation for those arguments here):
// Setup the WordPress core custom background feature.
add_theme_support( 'custom-background',
apply_filters( 'twentyfifteen_custom_background_args',
array(
'default-color' => $default_color,
'default-attachment' => 'fixed',
) ) );
You can implement this filter in your child theme’s functions.php, e.g.
function wpse_224240_custom_background_args($args) {
$args['default-image'] = get_stylesheet_directory_uri() . '/images/background.jpg';
return $args;
}
add_filter( 'twentyfifteen_custom_background_args',
'wpse_224240_custom_background_args' );
and add any extra logic you need to change the image there. For example if you want a specific different image per post then you could store that in post metadata and only set the 'default-image'
if you have a different URL from metadata to use. If you wanted to pick a random one from a set you can do this here too, etc., either hard-coding the set or storing it as an option if you’d like it configurable.