コード例 #1
0
Anneal::Path Anneal::GenerateRandomNeighbor(const Path &path_before) const
{
    int size = path_before.size();
    // ((size - 1) * (size - 2) / 2) represents the total number of intervals
    // where only the first city will never be changed.
    // For example, when size = 3:
    //
    //  * * *
    //  * *
    //  *
    //
    //  There are 6 intervals in total
    int random_index = generator_() % ((size - 1) * (size - 2) / 2);
    int i;
    for (i = 1; i < size - 1; i++)
    {
        int j = size - 1 - i;
        if (random_index >= j)
            random_index -= j;
        else
            break;
    }

    Path neighbor(path_before);
    std::reverse(neighbor.begin() + i, neighbor.begin() + i + 2 + random_index);

    return neighbor;
}
コード例 #2
0
ファイル: VariateRandom.hpp プロジェクト: milizhang/KTL
	//
	//	SUMMARY: 取得系メソッド
	//
	KTL_INLINE RandomResult NativeVariateRandom::random() {
		return generator_();
	}
コード例 #3
0
ファイル: sessions.hpp プロジェクト: ciminygithub/cgi
 /// Generate a new UUID.
 boost::uuids::uuid make_uuid() { return generator_(); }
コード例 #4
0
ファイル: McGenerator.cpp プロジェクト: JBLMM/LMM
//-- Generate a pseudo random sequence 
void McGenerator::generate(std::vector<double>& out_randomSequence)
{
	//assert(out_randomSequence.size() > 0);
	for (size_t i = 0; i < out_randomSequence.size(); ++i)
		out_randomSequence[i] = generator_();
}
コード例 #5
0
 /// fills the buffer using the generator
 void fill_buffer(buffer_type& buffer)
 {
   for (typename buffer_type::iterator it=buffer.begin();it!=buffer.end();++it)
     *it=generator_();
 }