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

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

Войти
Регистрация
Восстановить пароль
 
Zanexess
111 / 84 / 28
Регистрация: 22.10.2010
Сообщений: 227
#1

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

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

Как функцией rand() генерировать упорядоченные тройки различных чисел от [0; 1000) не используя ни циклов, ни условий, ни условных операторов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 23:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как функцией rand() генерировать упорядоченные тройки различных чисел (C++):

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

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

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

Как пользоваться функцией rand()? - C++
Все привет. Пытаюсь пользоваться функцией rand(), а получаю сообщение Это разве идентификатор? #include "stdafx.h" ...

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

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

8
IrineK
Заблокирован
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
Arigato
Программист
281 / 178 / 95
Регистрация: 05.12.2013
Сообщений: 682
Записей в блоге: 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
Zanexess
111 / 84 / 28
Регистрация: 22.10.2010
Сообщений: 227
25.03.2014, 00:18  [ТС] #4
IrineK,
Так они могут совпасть.
Arigato_RU,
Ты тем самым просто обрубаешь нижний предел.
Допустим у меня 778, но мне недостаточно получить число больше 778, возможно меня устроит и 1 с 5-кой.
Хотя если под упорядоченной тройкой считать A < B < C, то ты безусловно прав.


Тут скорее упорядоченные наборы даже.
Было бы все так просто.
Есть более хитрые способы?
0
IrineK
Заблокирован
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
Arigato
Программист
281 / 178 / 95
Регистрация: 05.12.2013
Сообщений: 682
Записей в блоге: 5
25.03.2014, 00:51 #6
Я не понимаю, что ты хочешь. "упорядоченные тройки различных чисел" - это и есть "A < B < C".
1
Zanexess
111 / 84 / 28
Регистрация: 22.10.2010
Сообщений: 227
25.03.2014, 01:05  [ТС] #7
Ладно. Вопрос снят. Будут условия таки.
0
IrineK
Заблокирован
25.03.2014, 01:33 #8
Может тогда и одинаковые можно?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,532
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 10:32
Привет! Вот еще темы с ответами:

Деление по модулю, работа с функцией rand() - C++
Мне нужно сгенерировать случайное число от 66 до 122, максимальное число RAND_MAX = 32767, мне нужно узнать на что нужно делить по модулю...

Исправить ошибки при работе с функцией rand - C++
Он просто выводит максимальное число вместо того чтобы выводить рандомное или я что то не так делаю? Ознакомьтесь с правилами форума. ...

Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand - C++
Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand а как - нибудь по другому, очень буду признательна.

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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