Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
113 / 86 / 52
Регистрация: 22.10.2010
Сообщений: 227
1

Как функцией rand() генерировать упорядоченные тройки различных чисел

24.03.2014, 23:21. Показов 945. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как функцией rand() генерировать упорядоченные тройки различных чисел от [0; 1000) не используя ни циклов, ни условий, ни условных операторов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2014, 23:21
Ответы с готовыми решениями:

Случайная последовательность чисел, генерируемой rand() функцией
Как можно из псевдослучайно последовательности сделать случайную-последовательность числе,...

Проблема с программой: Задаются 10 чисел функцией rand(). Определить сумму их квадратов
Фигня с прогой. Вывод случайных чисел получатся, выводится всё( в диапазоне от-100 до +100)...

Как работать с функцией rand()
Помогите сделать так, чтобы rand() каждый раз выкидывал неповторяющиеся значения.

Как пользоваться функцией rand()?
Все привет. Пытаюсь пользоваться функцией rand(), а получаю сообщение Это разве...

8
Заблокирован
24.03.2014, 23:51 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <ctime>
 
void SetCoord (int &x, int &y, int &z)
{   x = rand()%1000;
    y = rand()%1000;
    z = rand()%1000;
}
 
int main()
{   srand ((unsigned int) time (NULL));
    int x,y,z;
    x = y = z = 0;
 
    SetCoord (x,y,z);
    std :: cout << x << '\t' << y << '\t' << z;
 
    getchar();
    return 0;
}
1
Программист
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 683
Записей в блоге: 5
24.03.2014, 23:54 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <ctime>
#include <iostream>
 
using namespace std;
 
void main()
{
    int a,b,c;
    srand((unsigned)time(NULL));
    a=rand()%998;
    b=a+rand()%(998-a)+1;
    c=b+rand()%(999-b)+1;
    cout<<a<<" "<<b<<" "<<c<<endl;
    system("pause");
}
1
113 / 86 / 52
Регистрация: 22.10.2010
Сообщений: 227
25.03.2014, 00:18  [ТС] 4
IrineK,
Так они могут совпасть.
Arigato_RU,
Ты тем самым просто обрубаешь нижний предел.
Допустим у меня 778, но мне недостаточно получить число больше 778, возможно меня устроит и 1 с 5-кой.
Хотя если под упорядоченной тройкой считать A < B < C, то ты безусловно прав.


Тут скорее упорядоченные наборы даже.
Было бы все так просто.
Есть более хитрые способы?
0
Заблокирован
25.03.2014, 00:50 5
Цитата Сообщение от Zanexess Посмотреть сообщение
Так они могут совпасть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <ctime>
 
void SetCoord (int &x, int &y, int &z)
{   x = rand()%1000;
    y = rand()%1000;
    while (x==y)
         y = rand()%1000;
    z = rand()%1000;
    while (x==z || y==z)
         z = rand()%1000;
}
 
int main()
{   srand ((unsigned int) time (NULL));
    int x,y,z;
    x = y = z = 0;
 
    SetCoord (x,y,z);
    std :: cout << x << '\t' << y << '\t' << z;
 
    getchar();
    return 0;
}
1
Программист
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 683
Записей в блоге: 5
25.03.2014, 00:51 6
Я не понимаю, что ты хочешь. "упорядоченные тройки различных чисел" - это и есть "A < B < C".
1
113 / 86 / 52
Регистрация: 22.10.2010
Сообщений: 227
25.03.2014, 01:05  [ТС] 7
Ладно. Вопрос снят. Будут условия таки.
0
Заблокирован
25.03.2014, 01:33 8
Может тогда и одинаковые можно?
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.03.2014, 10:32 9
Цикл только для вывода.
Цитата Сообщение от Arigato_RU Посмотреть сообщение
"A < B < C"
соблюдается. Правда с rand() это ужос (все жмутся к максимальному пределу).


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
 
bool neo( int *arr, unsigned  int n, unsigned int min_limit, unsigned  int &max_limit )
{
if( max_limit - min_limit < n )
  return true; // error
 
if( n <= 0 )
  return false;
else
  {
  arr[--n] = min_limit + rand() % (max_limit - min_limit - n);
  neo( arr, n, arr[n]+1, max_limit ); // +1 чтобы не повторялись соседние
  }
return false;
}
 
 
 
int main()
{
const unsigned int n = 3;       //// Входные данные
unsigned int min_limit = 0;       //
unsigned int max_limit = 1000;  ////
 
int trinity[n];                       // Сам массив
 
srand(time(NULL));
 
 
if( !neo( trinity, n, min_limit, max_limit ) ) // Если все ништяк
  for( unsigned int i=0; i<n; i++ )            //  то вывести все
    cout << trinity[i] << endl;                //  это барахло
else
  cout << "n to large" << endl;
 
system("pause > pause-1");
return 0;
}
1
25.03.2014, 10:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 10:32
Помогаю со студенческими работами здесь

Как пользоваться функцией rand()?
Доброго времени суток.Глупый вопрос, но я до конца так и не разобрался как заполнять массив в...

Дан массив целых чисел. Вывести все тройки различных подряд идущих элементов.
Дан массив целых чисел. Вывести все тройки различных подряд идущих элементов. Обьясните...

Вывести все тройки элементов массива, упорядоченные строго по возрастанию
составьте программу, которая заполняет массив а случайными числами в диапазоне от 1 до 20 и выводит...

Дан массив из 12 чисел. Поменять местами 1 и 4 тройки чисел, а также 2 и 3 тройки
Например, массив: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; результат: 10, 11, 12, 7, 8, 9, 4, 5, 6,...

Даны две тройки вещественных чисел. Найти среднее арифметическое максимумов каждой тройки
Формат ввода: В первой строке - первая тройка чисел (три числе через пробел), во второй строке -...

Помогите с функцией rand
Привет всем помогите решить простую задачу Для каждого из следующих наборов целых чисел...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru