Для генерации случайных чисел использую rand()
перед этим иницииирую таймер srand(time(NULL));
, но при каждом перезапуске программы числа одинаковые...
Инициирую за телом цикла, вот код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int randomDigits[7] = {};
for (int i = 0; i < 7; i++)
{
cout << randomDigits[i] << endl;
}
system("pause");
return 0;
}
Ну добавьте вот такой цикл...
int randomDigits[7] = {};
for (int i = 0; i < 7; i++)
{
randomDigits[i] = rand();
}
В этом объявлении
int randomDigits[7] = {};
вы инициализировали все элементы массива нулем.
Более нигде в программе вы не изменяли значения элементов массива.
Если вы хотите задать значения элементов массива случайными числами (например, цифрами от 0 до 10 исключительно), то вам следует использовать стандартную C функцию. rand
, объявленную в заголовке <cstdlib>
.
У вас имеется несколько подходов.
Например, обычный for
цикл.
#include <cstdlib>
// ...
for( size_t i = 0; i < sizeof( randomDigits ) / sizeof( *randomDigits ); i++ )
{
randomDigits[[i] = std::rand() % 10;
}
Вместо выражения sizeof( randomDigits ) / sizeof( *randomDigits )
вы могли бы в C++17 использовать стандартную функцию std::size
, объявленную в заголовке <iterator>
. Например,
#include <cstdlib>
#include <iterator>
// ...
for( size_t i = 0; i < std::size( randomDigits ); i++ )
{
randomDigits[[i] = std::rand() % 10;
}
Также вы могли бы использовать предложение for
на основе диапазонов. Например,
#include <cstdlib>
// ...
for( auto &item : randomDigits )
{
item = std::rand() % 10;
}
И, наконец, вы могли бы использовать стандартный алгоритм std::generate
. Например,
#include <cstdlib>
#include <iterator>
#include <algorithm>
// ...
std::generate( std::begin( randomDigits ), std::end( randomDigits ),
[] { return std::rand() % 10; } );
Виртуальный выделенный сервер (VDS) становится отличным выбором
Почему в случае ch = 3 в case игнорируется строка gets_s(text, 150)? То есть при срабатывании этого case программа не дает возможности ввести text
Почему отладчик превращает 'e' в 'H'? тексты программы: case игнорирует ввод строки Спасибо
Собственно в названии вопроса и проблемаУ меня есть несколько классов
Собственно говоря, суть моего вопроса можно свести к следующему: почему мы в обязательном порядке должны присваивать начальное значение...