我一直在试图找到一种方法,可以为我想要编写的骰子程序逐步减慢循环速度。获取一个随机数并显示/比较它并不困难。我的问题是试图弄清楚如何显示随机数字,就像骰子在滚动一样,速度越来越慢,直到我想显示生成的兰特数。
我曾想过在另一个for循环中做一个for环路,并用第一个循环数减去第二个循环数。我不知道是否有更好的方法。所有的seraching都会出现关于程序如何因为没有分配内存而变慢的serachich。
for (int i = 5; i > 0; i--)
{
for (int j = 1000; j > 0; j -= i)
{
cout << randNumGen();
}
}
#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));
}
}
您需要使用对gcc和clang的c++11支持进行编译,这是-std=c++0x