Рандомайзер выводит одинаковые числа [закрыт]

116
18 июля 2019, 06:30

Для генерации случайных чисел использую 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;
}
Answer 1

Ну добавьте вот такой цикл...

int randomDigits[7] = {};
for (int i = 0; i < 7; i++)
{
    randomDigits[i] = rand();
}
Answer 2

В этом объявлении

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; } );
READ ALSO
case игнорирует ввод строки

case игнорирует ввод строки

Почему в случае ch = 3 в case игнорируется строка gets_s(text, 150)? То есть при срабатывании этого case программа не дает возможности ввести text

166
Отладчик неверно увидел символ

Отладчик неверно увидел символ

Почему отладчик превращает 'e' в 'H'? тексты программы: case игнорирует ввод строки Спасибо

122
Обработка нажатия на кнопку и получение текста из поля

Обработка нажатия на кнопку и получение текста из поля

Собственно в названии вопроса и проблемаУ меня есть несколько классов

131
Локальные переменные в Java

Локальные переменные в Java

Собственно говоря, суть моего вопроса можно свести к следующему: почему мы в обязательном порядке должны присваивать начальное значение...

131