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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Suslik73
2 / 2 / 1
Регистрация: 11.10.2009
Сообщений: 52
#1

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

26.02.2010, 19:56. Просмотров 1046. Ответов 8
Метки нет (Все метки)

полазил по форумам, понял что лучшей конструкцией для ввода случайных чисел является:
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);
        }
    }
}
Подскажите, в чем дело? Как сделать, чтобы работало правильно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
26.02.2010, 20:10     генерация случайных чисел #2
Suslik73, int *a меняй на int **a и a[i][j] - доступ к элементу.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
833 / 517 / 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
8277 / 3496 / 143
Регистрация: 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
8277 / 3496 / 143
Регистрация: 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++ Генерация случайных чисел
C++ Генерация случайных чисел
Генерация случайных чисел C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 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     генерация случайных чисел
Ответ Создать тему
Опции темы

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