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

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

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

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

26.02.2010, 19:56. Просмотров 1090. Ответов 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);
        }
    }
}
Подскажите, в чем дело? Как сделать, чтобы работало правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2010, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос генерация случайных чисел (C++):

Генерация случайных чисел - C++
Как в С сгенирировать последовательность случайных чисел от x до y.Например от 1 до 100.

Генерация случайных чисел - C++
Вопрос такой: возможно ли при помощи функции random, устроить случайную генерацию одного из двух чисел? Например мне нужны числа 2 и 4.

Генерация случайных чисел - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; using namespace std; int main ()...

Генерация случайных чисел - C++
Для генерации случайных чисел использую выражение: x = rand() % 4; Библиотеку &lt;cstdlib&gt; компилятор подключать не требует (VS12). ...

Генерация случайных чисел - C++
Здравствуйте! Мне нужно сгенерировать случайные числа, много и за секунду или быстрей. Можно ли использовать время компьютера с...

Генерация случайных чисел - C++
Помогите пожалуйста с этой программой, я ни как не могу понять как ее зделать. Написать программу, которая генерирует три...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
26.02.2010, 20:10 #2
Suslik73, int *a меняй на int **a и a[i][j] - доступ к элементу.
PointsEqual
ниначмуроФ
834 / 518 / 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
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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);
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.02.2010, 23:21 #9
Цитата Сообщение от M128K145 Посмотреть сообщение
и будет последовательность [0, 19].
Правильно будет так
Человеку надо [1, 20]
Правильно будет так
C++
1
rand()%20+1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2010, 23:21
Привет! Вот еще темы с ответами:

Генерация случайных чисел - C++
Доброго времени суток ! Как генерировать случайное число например в диапазоне от 1 до 52 а потом исключить это число, и генерировать...

Генерация случайных чисел - C++
Подскажите пожалуйста правильно ли я осуществил перевод строк из С в С++, сомневаюсь С - randomize(); С++ - srand(NULL); С ...

Генерация случайных чисел - C++
Здравствуйте, появилась такая проблема: при генерации случайного числа функцией rand(); мне нужно сгенерировать 5 случайных чисел, но...

генерация случайных чисел - C++
Написать программу, которая должна обеспечить исчисление количества повторений заданного числа по модулю 100. Характеристика должна быть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.02.2010, 23:21
Ответ Создать тему
Опции темы

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