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

rand, srand и т.д - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
vab9petryk
 Аватар для vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 212
12.10.2013, 19:06     rand, srand и т.д #1
Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы этих элементов.

Вопрос: можно ли как то генерировать числа, чтобы только 2 элемента были равны друг другу, а все остальные были абсолютно разными?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 19:06     rand, srand и т.д
Посмотрите здесь:

rand() & srand() C++
C++ Srand
srand C++
C++ srand и rand
C++ srand(), rand() и их seed
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.10.2013, 19:10     rand, srand и т.д #2
Сгенерить набор чисел без повторов, выбрать из них случайное и его продублировать.
vab9petryk
 Аватар для vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 212
12.10.2013, 20:12  [ТС]     rand, srand и т.д #3
Цитата Сообщение от 0x10 Посмотреть сообщение
Сгенерить набор чисел без повторов, выбрать из них случайное и его продублировать.
Можете написать?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.10.2013, 20:18     rand, srand и т.д #4
vab9petryk, для такой задачи особого разброса не нужно. Цикл от N до K с шагом 1 - готов массив чисел. Выбрать случайный элемент и добавить в его в конец - в чем проблемы?
vab9petryk
 Аватар для vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 212
12.10.2013, 20:25  [ТС]     rand, srand и т.д #5
Цитата Сообщение от 0x10 Посмотреть сообщение
vab9petryk, для такой задачи особого разброса не нужно. Цикл от N до K с шагом 1 - готов массив чисел. Выбрать случайный элемент и добавить в его в конец - в чем проблемы?
Как я понял, я сам должен выбрать случайный элемент и сам поместить.

Просто я хотел бы чтобы с-ма сама выбирала случайный элемент и помещала в случайное место. Такое легко сделать или нет?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.10.2013, 20:29     rand, srand и т.д #6
std::random_shuffle - перемешивание массива.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
12.10.2013, 21:07     rand, srand и т.д #7
Возможно как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    const int SIZE=10;
    srand(time(NULL));
    int mass[SIZE];
        for (int j=0; j<SIZE-1; j++)
            mass[j] = j+1;
        random_shuffle(mass, mass+SIZE-1);
        for (int j=SIZE-1; j<SIZE; j++)
            mass[j] =rand() %SIZE;
        for (int j=0; j<SIZE; j++)
  cout << mass[j] << " ";
  cout << " \n\n";
 return 0;
}
здорово не проверял,но должно работать.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.10.2013, 21:11     rand, srand и т.д #8
Genn55, Второй цикл из одной итерации.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
12.10.2013, 21:20     rand, srand и т.д #9
Может это и не правильно,но просто должно сгенерироваться 1 случайное число которое уже есть в массиве и вставиться в конец.

Добавлено через 1 минуту
Наверное можно и покрасивее сделать.
vab9petryk
 Аватар для vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 212
12.10.2013, 23:15  [ТС]     rand, srand и т.д #10
Цитата Сообщение от Genn55 Посмотреть сообщение
Возможно как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    const int SIZE=10;
    srand(time(NULL));
    int mass[SIZE];
        for (int j=0; j<SIZE-1; j++)
            mass[j] = j+1;
        random_shuffle(mass, mass+SIZE-1);
        for (int j=SIZE-1; j<SIZE; j++)
            mass[j] =rand() %SIZE;
        for (int j=0; j<SIZE; j++)
  cout << mass[j] << " ";
  cout << " \n\n";
 return 0;
}
здорово не проверял,но должно работать.

у меня двумерный массив

Добавлено через 1 час 11 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
std::random_shuffle - перемешивание массива.
а разве можно так перемешивать двумерный массив, я че то не догоняю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 06:50     rand, srand и т.д
Еще ссылки по теме:

Различия srand() и rand() C++
C++ Объясните что делает эта программа (for,rand,srand)
Srand C++

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

Или воспользуйтесь поиском по форуму:
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
13.10.2013, 06:50     rand, srand и т.д #11
Цитата Сообщение от vab9petryk Посмотреть сообщение
а разве можно так перемешивать двумерный массив, я че то не догоняю
Да было бы желание, а извратиться всегда можно... По крайней мере, для статических массивов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <algorithm>
#include <iostream>
 
int main()
{
    const int N = 4;
    const int M = 2;
 
    int arr[N][M] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
 
    srand(time(NULL));
    std::random_shuffle(&arr[0][0], &arr[0][0] + N * M);
    
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < M; ++j)
        {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
А так - можно с одномерным массивом работать как с двумерным и к элементам обрашаться по формуле (i, j) = (i * M + j).
Yandex
Объявления
13.10.2013, 06:50     rand, srand и т.д
Ответ Создать тему
Опции темы

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