1

我一直在尝试找出一种方法,可以让 cpp 逐渐减慢我想要编写的骰子程序的循环速度。获取一个随机数并显示/比较它并不困难。我的问题是试图弄清楚如何显示随机数,就好像骰子正在滚动一样,它逐渐变得越来越慢,直到我想显示生成的兰特数。

我考虑过在另一个 for 循环中做一个 for 循环,并使用第一个循环数从第二个循环数中减去。不知道有没有更好的办法。所有 seraching 都会出现关于程序如何变慢的 seraches,因为它们没有分配内存。

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

1 回答 1

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 random 可能也是值得的,它更像是 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

于 2012-03-09T18:26:30.633 回答