void generate( allele_type & all, FreeSpaceType & free_space, unsigned int N, unsigned int age ) { assert( N <= free_space.free_size()); typename FreeSpaceType::base_type::iterator it = free_space.free_begin(); while( N-- ) { typename FreeSpaceType::size_type offset = *it++; operator()( all, offset, age ); } }
void operator()( sequence_space_type * seqs, FreeSpaceType & free_space, unsigned int N ) { assert( N <= free_space.free_size() ); sequence_distribution_type seq_gen( 0, seqs.row_count() - 1 ); typename FreeSpaceType::base_type::iterator it = free_space.free_begin(); while( N-- ) { unsigned int seq_idx = seq_gen( *m_rng ); typename FreeSpaceType::size_type all_idx = *it++; operator()( seqs, seq_idx, all_idx ); } }