Форум программистов, компьютерный форум CyberForum.ru

генерация случайных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Suslik73
2 / 2 / 1
Регистрация: 11.10.2009
Сообщений: 52
26.02.2010, 19:56     генерация случайных чисел #1
полазил по форумам, понял что лучшей конструкцией для ввода случайных чисел является:
srand(time(NULL));
...
int r = (rand()%(20-1+1)+1) // вроде числа из [1..20];
однако при выполнении данной функции все строки двумерного массива получаются одинаковыми.
C++
1
2
3
4
5
6
7
8
void createArr(int* a, int n, int m) {
    srand(time(NULL));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            a[i, j] = (rand()%(20-1+1)+1);
        }
    }
}
Подскажите, в чем дело? Как сделать, чтобы работало правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2010, 19:56     генерация случайных чисел
Посмотрите здесь:

C++ Генерация случайных чисел
C++ Генерация случайных чисел
Генерация случайных чисел C++
Генерация случайных чисел С++ C++
Генерация случайных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 717
26.02.2010, 20:10     генерация случайных чисел #2
Suslik73, int *a меняй на int **a и a[i][j] - доступ к элементу.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.02.2010, 20:13     генерация случайных чисел #3
srand(time(NULL)); перед циклами

Добавлено через 1 минуту
Цитата Сообщение от PointsEqual Посмотреть сообщение
srand(time(NULL)); перед циклами

не, не читайте, что я написал)
@KOT@
81 / 39 / 2
Регистрация: 29.01.2010
Сообщений: 386
26.02.2010, 20:35     генерация случайных чисел #4
Цитата Сообщение от Suslik73 Посмотреть сообщение
rand()%(20-1+1)+1
А почему так сложно ? не легче - rand()%20
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.02.2010, 20:42     генерация случайных чисел #5
@KOT@, и будет последовательность [0, 19].
Правильно будет так
C
1
rand() % 19 + 1
C++
1
2
3
4
5
6
7
8
9
void createArr(int** a, int n, int m) {
        srand(time(NULL));
        int i, j; 
        for (i = 0; i < n; i++) {
                for (j = 0; j < m; j++) {
                        a[i][j] = rand() % 19 + 1;
                }
        }
}
@KOT@
81 / 39 / 2
Регистрация: 29.01.2010
Сообщений: 386
26.02.2010, 20:45     генерация случайных чисел #6
Цитата Сообщение от M128K145 Посмотреть сообщение
@KOT@, и будет последовательность [0, 19].
Правильно будет так
хм. не подумал.
Suslik73
2 / 2 / 1
Регистрация: 11.10.2009
Сообщений: 52
26.02.2010, 21:11  [ТС]     генерация случайных чисел #7
Андрейка,
M128K145, а если так писать, то как тогда вызвать функцию? (извините за глупый вопрос))
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.02.2010, 21:26     генерация случайных чисел #8
C++
1
2
3
4
5
6
int n, m, i, j;
std::cin>>n, std::cin>>m;
int **mas = new int*[n];
for(i = 0; i < n; ++i)
    mas[i] = new int[m];
createArr(mas, n, m);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2010, 23:21     генерация случайных чисел
Еще ссылки по теме:

C++ Генерация случайных чисел
C++ Генерация случайных чисел
C++ Генерация случайных чисел

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
26.02.2010, 23:21     генерация случайных чисел #9
Цитата Сообщение от M128K145 Посмотреть сообщение
и будет последовательность [0, 19].
Правильно будет так
Человеку надо [1, 20]
Правильно будет так
C++
1
rand()%20+1
Yandex
Объявления
26.02.2010, 23:21     генерация случайных чисел
Ответ Создать тему
Опции темы

Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru