逐步减慢循环?

时间:2012-03-09 18:13:11

标签: c++ slowdown

我一直试图找出一种方法,我可以逐步减慢我想写的骰子程序的循环速度。获取随机数并显示/比较它并不困难。我的问题是试图找出如何显示随机数,好像骰子在逐渐变慢和逐渐变慢,直到我想显示生成的兰特数。

我已经考虑过在另一个for循环中进行for循环,并使用第一个循环数从第二个减去。我不知道是否有更好的方法。所有的seraching都会提供关于程序如何变慢的分析,因为它们没有分配内存。

for (int i = 5; i > 0; i--)
{
    for (int j = 1000; j > 0; j -= i)
    {
        cout << randNumGen();
    }
}

1 个答案:

答案 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