Как симулировать бросок костей с разным количеством сторон? - PullRequest
1 голос
/ 08 февраля 2020

Следующий код берет предоставленное пользователем количество сторон для игры в кости, а затем вызывает функцию для возврата случайного результата броска кости. Однако я не могу понять, как сгенерировать случайное число от 1 до указанного числа.

#include <iostream>
    using namespace std;
    int main() {
      int numberOfSides = 0;

      do
      {
        cout << "How many sides do you want the die to have? ";
        cin >> numberOfSides;
        if (numberOfSides <= 0)
        {
          cout << "Error: Please enter a positive integer!" << endl << endl;
        }
      }  while (numberOfSides <= 0);

      int result = rollDie(numberOfSides);
      cout << "You rolled a " << result << endl;
    }

    int rollDie(int numberOfSides) 
    {
      // Complete this function  
    }

1 Ответ

1 голос
/ 08 февраля 2020

Генерация случайных чисел описана в качестве примера в справочнике C ++.

Пожалуйста, посмотрите на здесь .

Там вы также найдете описание. Я завершил вашу функцию ссылочным кодом.

Пожалуйста, см .:

#include <iostream>
#include <random>

int rollDie(int numberOfSides)
{
    std::random_device rd;  //Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> dis(1, numberOfSides);
    return dis(gen);
}


int main() {
    int numberOfSides = 0;

    do
    {
        std::cout << "How many sides do you want the die to have? ";
        std::cin >> numberOfSides;
        if (numberOfSides <= 0)
        {
            std::cout << "Error: Please enter a positive integer!\n\n";
        }
    } while (numberOfSides <= 0);

    int result = rollDie(numberOfSides);
    std::cout << "You rolled a " << result << "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...