Ejemplo n.º 1
0
    thread_id_t iteration_begin_impl()
    {
        stree_depth_ = 0;

        unsigned const index = rand_impl(this->running_threads_count, sched_type_sched);
        thread_id_t const th = this->running_threads[index];
        return th;
    }
Ejemplo n.º 2
0
const int mrt::random(const unsigned max) {
	if (max < 2) 
		return 0;

//	int bits;
//	unsigned m = max;
//	for(bits = 1; m >>= 1; ++bits);
//	bits = (32 - bits) / 2; //take middle bits of the generated number
	
	unsigned x = rand_impl();
	/*
	unsigned len, n = max;
	for(len = 0; n != 0; n >>= 1, ++len);
	assert(len > 0 && len <= 32);
	len = (32 - len);
	//LOG_DEBUG(("random len: %u for maximum %u", len, max));
	//LOG_DEBUG(("random number: 0x%08x, shifted: %u, max: %u", x, x >> len, max));
	x >>= len;
	*/
	//x = (x >> bits) % max;
	x %= max;
	//LOG_DEBUG(("result: %u of %d, bits: %d", x, max, bits));
	return (int)x;
}