#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <limits>
int roll(int mini, int maxi)
{
int v = maxi - mini;
int x = mini + (rand() % (v+1));
return x;
}
void flush_stream(std::istream& stream)
{
stream.clear();
stream.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
int get_valid_number(const std::string& prompt)
{
int number = 0;
bool valid = false;
while (!valid)
{
std::cout << prompt << std::endl;
if (std::cin >> number)
{
valid = true;
}
flush_stream(std::cin);
}
return number;
}
void caller()
{
const int a = get_valid_number("Enter minimum number");
int b = std::numeric_limits<int>::min();
do
{
b = get_valid_number("Enter maximum number");
}
while (b <= a);
const int c = get_valid_number("How many rolls?");
for (int i = 0; i < c; ++i)
{
std::cout << roll(a, b) << std::endl;
}
}
int main()
{
srand(time(NULL));
caller();
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxsaW1pdHM+CgppbnQgcm9sbChpbnQgbWluaSwgaW50IG1heGkpCnsKICAgIGludCB2ID0gbWF4aSAtIG1pbmk7CiAgICBpbnQgeCAgPSBtaW5pICsgKHJhbmQoKSAlICh2KzEpKTsKICAgIHJldHVybiB4OwoKfQoKdm9pZCBmbHVzaF9zdHJlYW0oc3RkOjppc3RyZWFtJiBzdHJlYW0pCnsKICAgIHN0cmVhbS5jbGVhcigpOwogICAgc3RyZWFtLmlnbm9yZShzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c3RyZWFtc2l6ZT46Om1heCgpLCAnXG4nKTsKfQoKaW50IGdldF92YWxpZF9udW1iZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHByb21wdCkKewogICAgaW50IG51bWJlciA9IDA7CgogICAgYm9vbCB2YWxpZCA9IGZhbHNlOwogICAgd2hpbGUgKCF2YWxpZCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgcHJvbXB0IDw8IHN0ZDo6ZW5kbDsKICAgICAgICBpZiAoc3RkOjpjaW4gPj4gbnVtYmVyKQogICAgICAgIHsKICAgICAgICAgICAgdmFsaWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBmbHVzaF9zdHJlYW0oc3RkOjpjaW4pOwogICAgfQoKICAgIHJldHVybiBudW1iZXI7Cn0KCnZvaWQgY2FsbGVyKCkKewogICAgY29uc3QgaW50IGEgPSBnZXRfdmFsaWRfbnVtYmVyKCJFbnRlciBtaW5pbXVtIG51bWJlciIpOwogICAgaW50IGIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOwogICAgZG8KICAgIHsKICAgICAgICBiID0gZ2V0X3ZhbGlkX251bWJlcigiRW50ZXIgbWF4aW11bSBudW1iZXIiKTsKICAgIH0KICAgIHdoaWxlIChiIDw9IGEpOwogICAgY29uc3QgaW50IGMgPSBnZXRfdmFsaWRfbnVtYmVyKCJIb3cgbWFueSByb2xscz8iKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGM7ICsraSkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgcm9sbChhLCBiKSA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgc3JhbmQodGltZShOVUxMKSk7CiAgICBjYWxsZXIoKTsKfQo=