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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 223
#1

rand, srand и т.д - C++

12.10.2013, 19:06. Просмотров 1152. Ответов 10
Метки нет (Все метки)

Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы этих элементов.

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

srand и rand - C++
Здравствуйте. Надо заполнить массив единицами и нулями. srand (time (NULL)); for (int i=0; i<size; i++){ val=rand()%2; } ...

rand() & srand() - C++
кто знает как работает пара функции rand() и srand(). я знаю как это пара функци работает.мне всегда интересовало как это зделано .одно...

srand(), rand() и их seed - C++
Пишу класс, объекты которого представляют из себя трехмерные модели планет. Для того что бы разнообразить ландшафт использую алгоритм,...

Различия srand() и rand() - C++
Привет, форумчане! Изучаю с++шник, внезапно появился нездоровый интерес. Чем srand() отличается от rand()? Знаю, что srand() генерирует...

Объясните что делает эта программа (for,rand,srand) - C++
Пожалуйста объясните что делает эта программа. Поподробней про for(i=1;i<=5;i++) , a=rand()%(20-10+1)+10; и b=b+a;c=b/i; #include...

Srand - C++
есть кусок кода: srand(time(NULL)); for (jeka = 0; jeka < 100000; jeka++) { jora = rand() % 9; cout << jora << " "; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
12.10.2013, 19:10 #2
Сгенерить набор чисел без повторов, выбрать из них случайное и его продублировать.
vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 223
12.10.2013, 20:12  [ТС] #3
Цитата Сообщение от 0x10 Посмотреть сообщение
Сгенерить набор чисел без повторов, выбрать из них случайное и его продублировать.
Можете написать?
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
12.10.2013, 20:18 #4
vab9petryk, для такой задачи особого разброса не нужно. Цикл от N до K с шагом 1 - готов массив чисел. Выбрать случайный элемент и добавить в его в конец - в чем проблемы?
vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 223
12.10.2013, 20:25  [ТС] #5
Цитата Сообщение от 0x10 Посмотреть сообщение
vab9petryk, для такой задачи особого разброса не нужно. Цикл от N до K с шагом 1 - готов массив чисел. Выбрать случайный элемент и добавить в его в конец - в чем проблемы?
Как я понял, я сам должен выбрать случайный элемент и сам поместить.

Просто я хотел бы чтобы с-ма сама выбирала случайный элемент и помещала в случайное место. Такое легко сделать или нет?
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
12.10.2013, 20:29 #6
std::random_shuffle - перемешивание массива.
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
12.10.2013, 21:07 #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
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
12.10.2013, 21:11 #8
Genn55, Второй цикл из одной итерации.
Genn55
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
12.10.2013, 21:20 #9
Может это и не правильно,но просто должно сгенерироваться 1 случайное число которое уже есть в массиве и вставиться в конец.

Добавлено через 1 минуту
Наверное можно и покрасивее сделать.
vab9petryk
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 223
12.10.2013, 23:15  [ТС] #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 - перемешивание массива.
а разве можно так перемешивать двумерный массив, я че то не догоняю
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
13.10.2013, 06:50 #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).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 06:50
Привет! Вот еще темы с ответами:

srand - C++
что значит строка? srand((unsigned)time(NULL);

Srand - C++
что делает srand? (наприме: srand(static_cast&lt;unsigned int&gt;(time(0))); )

Srand - C++
Нужно сделать так чтобы начальное значение Srand было не от времени а от тактовой частоты процессора, подскажите как сделать

srand не компилится - C++
void Client::InitializeRandSessionKey() { srand(time(NULL)); randSessionKey=rand()%100; } 1&gt;h:\wmf\wmf\wmf\main.cpp(25) :...


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

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

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