Пример #1
0
// Return a random int from min to max, inclusive
int randInt(int min, int max)
{
    if (max < min)
    swap(max, min);
    static random_device rd;
    static mt19937 generator(rd());
    uniform_int_distribution<> distro(min, max);
    return distro(generator);
}
Пример #2
0
int main()
{
	std::mt19937 engine;
	std::uniform_int_distribution<int> distro(0, 127);
	std::vector<int> list(5000000);
	for (auto iter = list.begin(); iter != list.end(); ++iter)
	{
		*iter = distro(engine);
	}

	auto bucketSorted = list;
	auto qsorted = list;

	auto now = std::chrono::system_clock::now();
	bucketSort(bucketSorted.begin(), bucketSorted.end());
	auto then = std::chrono::system_clock::now();
	auto diff1 = std::chrono::duration_cast<std::chrono::microseconds>(then - now).count();

	now = std::chrono::system_clock::now();
	std::sort(qsorted.begin(), qsorted.end());
	then = std::chrono::system_clock::now();
	auto diff2 = std::chrono::duration_cast<std::chrono::microseconds>(then - now).count();

	int i = 0;
	/*for(auto itr : bucketSorted)
	{
		++i;
		if (i % 5 == 0)
			std::cout << std::endl;
		std::cout << std::setw(5) << itr; 
	}*/
	std::cout << std::endl;
	std::cout << "Bucket sort took: " << diff1 << " microsecs." << std::endl;
	std::cout << "std::sort took: " << diff2 << " microsecs." << std::endl;


	return 0; 
}
Пример #3
0
QString getLinuxDistribution() {
	
#if defined(HAVE_POPEN) && defined(HAVE_PCLOSE)
	{
		QString distro(getOutputOf("lsb_release -d").trimmed());
		QString prefix("Description:");
		if(distro.startsWith(prefix)) {
			distro = distro.mid(prefix.length()).trimmed();
		}
		if(!distro.isEmpty()) {
			
			QString codename(getOutputOf("lsb_release -c").trimmed());
			QString prefix("Codename:");
			if(codename.startsWith(prefix)) {
				codename = codename.mid(prefix.length()).trimmed();
			}
			
			if(!codename.isEmpty() && codename != "n/a") {
				distro += " (";
				distro += codename;
				distro += ")";
			}
			
			return distro;
		}
	}
#endif
	
	// Fallback for older / non-LSB-compliant distros.
	// Release file list taken from http://linuxmafia.com/faq/Admin/release-files.html
	
	const char * release_files[] = {
		"/etc/annvix-release",
		"/etc/arch-release",
		"/etc/arklinux-release",
		"/etc/aurox-release",
		"/etc/blackcat-release",
		"/etc/cobalt-release",
		"/etc/conectiva-release",
		"/etc/fedora-release",
		"/etc/gentoo-release",
		"/etc/immunix-release",
		"/etc/lfs-release",
		"/etc/linuxppc-release",
		"/etc/mandriva-release",
		"/etc/mandrake-release",
		"/etc/mandakelinux-release",
		"/etc/mklinux-release",
		"/etc/nld-release",
		"/etc/pld-release",
		"/etc/slackware-release",
		"/etc/e-smith-release",
		"/etc/release",
		"/etc/sun-release",
		"/etc/SuSE-release",
		"/etc/novell-release",
		"/etc/sles-release",
		"/etc/tinysofa-release",
		"/etc/turbolinux-release",
		"/etc/ultrapenguin-release",
		"/etc/UnitedLinux-release",
		"/etc/va-release",
		"/etc/yellowdog-release",
		"/etc/debian_release",
		"/etc/redhat-release",
	};
	
	const char * version_files[][2] = {
		{ "/etc/debian_version", "Debian " },
		{ "/etc/knoppix_version", "Knoppix " },
		{ "/etc/redhat_version", "RedHat " },
		{ "/etc/slackware-version", "Slackware " },
	};
	
	const char * lsb_release = "/etc/lsb-release";
	
	for(size_t i = 0; i < ARRAY_SIZE(release_files); i++) {
		QFile file(release_files[i]);
		if(file.exists()) {
			file.open(QIODevice::ReadOnly);
			QString distro(QString(file.readAll()).trimmed());
			file.close();
			if(!distro.isEmpty()) {
				return distro;
			}
		}
	}
	
	for(size_t i = 0; i < ARRAY_SIZE(version_files); i++) {
		QFile file(version_files[i][0]);
		if(file.exists()) {
			file.open(QIODevice::ReadOnly);
			QString distro(version_files[i][1] + QString(file.readAll()).trimmed());
			file.close();
			if(!distro.isEmpty()) {
				return distro;
			}
		}
	}
	
	QFile file(lsb_release);
	if(file.exists()) {
		file.open(QIODevice::ReadOnly);
		QString distro(QString(file.readAll()).trimmed());
		file.close();
		QString prefix("DISTRIB_ID=\"");
		QString suffix("\"");
		if(distro.startsWith(prefix) && distro.endsWith(suffix)) {
			distro = distro.mid(
				prefix.length(),
				distro.length() - prefix.length() - suffix.length()
			).trimmed();
		}
		return distro;
	}
	
	return QString();
}
Пример #4
0
 f32 Random::randFloat()
 {
    std::uniform_real_distribution<f32> distro(0.0f, 1.0f);
    auto result = distro(m_randEngine);
    return result;
 }
Пример #5
0
 i32 Random::randInt(i32 a, i32 b)
 {
    std::uniform_int_distribution<i32> distro(a, b);
    auto result = distro(m_randEngine);
    return result;
 }