use random device which is constructed temporally
add const
set_children( shared pointers of children )