我一直试图找出一种方法,我可以逐步减慢我想写的骰子程序的循环速度。获取随机数并显示/比较它并不困难。我的问题是试图找出如何显示随机数,好像骰子在逐渐变慢和逐渐变慢,直到我想显示生成的兰特数。
我已经考虑过在另一个for循环中进行for循环,并使用第一个循环数从第二个减去。我不知道是否有更好的方法。所有的seraching都会提供关于程序如何变慢的分析,因为它们没有分配内存。
for (int i = 5; i > 0; i--)
{
for (int j = 1000; j > 0; j -= i)
{
cout << randNumGen();
}
}
答案 0 :(得分:3)
#include <thread>
#include <chrono>
:::
for (int i = 5; i > 0; i--)
{
for (int j = 1000; j > 0; j -= i)
{
cout << randNumGen();
std::this_thread::sleep_for(
std::chrono::milliseconds(j));
}
}
http://en.cppreference.com/w/cpp/thread/sleep_for
http://en.cppreference.com/w/cpp/chrono
你可能也值得一看C ++ 11随机它是更多C ++以跨平台方式生成随机数的方式。
std::uniform_int_distribution<int> distribution(1, 6); //dice values
std::mt19937 engine; // Mersenne twister MT19937
int random = distribution(engine);
http://en.cppreference.com/w/cpp/numeric/random
#include <thread>
#include <chrono>
#include <random>
#include <iostream>
:::
std::random_device rd;
std::uniform_int_distribution<int> dist(1, 6); //dice values
std::mt19937 mt(rd()); // Mersenne twister MT19937
for (int i = 5; i > 0; i--) //i don't really get what your loops mean
{
for (int j = 1000; j > 0; j -= i)
{
cout << dist(mt);
std::this_thread::sleep_for(
std::chrono::milliseconds(j));
}
}
您需要使用c ++ 11支持编译gcc和clang这是-std = c ++ 0x