Неправильно работает функция rand() в c++ [закрыт]

137
07 сентября 2019, 11:30
#include "pch.h"
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
     int v1 = rand() % 10;
     cout << "1" << v1 << endl;
     cout << "2" << 1 + rand() % 5 << endl;
     cout << "3" << 1 + rand() % 5 << endl;
     cout << "4" << 1 + rand() % 5 << endl;
     cout << "5" << 1 + rand() % 5 << endl;
     cout << "6" << 1 + rand() % 5 << endl;
     cout << "7" << 1 + rand() % 5 << endl;

  return 0;
}

Хочу получить рандомные числа от 0 до 5. Этот код возвращает: 11 23 35 41 55 65 74 Почему?

Answer 1

Шутить изволите?

Вы выводите цифру, за которой сразу после пробела следует случайное число:

 cout << "2" << 1 + rand() % 5 << endl;

После этого ваше 23 следует рассматривать как "2", за которой выведено 3, которое и есть ваше случайное число от 1 до 5 :)

Первое число v1 у вас 1, затем вы получаете 3 5 1 5 5 4.

Но я бы рекомендовал - раз уж у вас C++ - ознакомиться с библиотекой <random>, генерирующей случайные числа более "по-взрослому" :)

READ ALSO
Прочитать структуры из вектора

Прочитать структуры из вектора

Есть вектор структур:

127
Найти максимальный элемент массива [закрыт]

Найти максимальный элемент массива [закрыт]

Найти максимальный элемент в массиве ai (i=1, , n), используя очевидное соотношение max(a1, , an) = max[max(a1, , an–1), an]Использовать рекурсивную и нерекурсивную...

135
Как перенаправить ввод-вывод через pipe?

Как перенаправить ввод-вывод через pipe?

Создаю pipe, запускаю программу - итог висякКак проверить что pipe не нужно читать - виснет на чтение pipe

106