Другие языки программирования и технологии

Как вывести рандомные 2 числа из отрезка 1 до 5,только чтоб они не равные были 3? С++

У меня есть 4 элемента массива, мне нужно вывести 2 рандомные элемента, только чтоб не выводился 4 элемент
Нужна подсказка для С++
Kirill Grach
Kirill Grach
256
От 1 до 4 и +1 при равно 3.
Пётр
Пётр
85 524
Лучший ответ
Каро Карапетян Если так сделать, распределение вероятностей будет неравномерным
Из заголовка вопроса.

#include < iostream >
#include < cstdlib >
#include < ctime >

using namespace std;

int Gen();

void main()
{
setlocale(LC_ALL, "rus");
srand(time(NULL));
system("color 0A");
cout << "Первое случайное число (из интервала от 1 до 5, но не 3) = " << Gen() << " Воторое число " << Gen() << endl;
cin.get(); cin.get();
}

int Gen()
{
int t;
for (;;)
{
t = 1 + rand() % 5;
if (t != 3)
break;
}
return t;
}

Из тела вопроса.

#include < iostream >
#include < cstdlib >
#include < ctime >

using namespace std;

void main()
{
setlocale(LC_ALL, "rus");
srand(time(NULL));
system("color 0A");
auto a = new int[4];
cout << "исходный массив" << endl;
for (unsigned u = 0; u < 4; ++u)
{
a[u] = -10 + rand() % 21;
cout << a[u] << " ";
}
cout << "\n2 случайные элемента" << endl;
unsigned ind1 = rand() % 3;
unsigned ind2;
for (;;)
{
ind2 = rand() % 3;
if (ind2 != ind1)
break;
}
cout << "1: " << a[ind1] << " ind " << ind1 << endl;
cout << "2: " << a[ind2] << " ind " << ind2 << endl;
cin.get(); cin.get();
}
что-то у вас противоречие в заголовке и в пояснении

если насчёт того что в заголовке и если числа целые только то можно например как предыдущий оратор "От 1 до 4 и +1 при равно 3" только не +1 а +2
код что-то вроде этого

int k= rand() % 5 +1;
if (k==3) k+=2;

2 раза соответственно для каждого числа

а если то что в пояснении то вам вообще просто не нужно просто рассматривать 4 элемент

int k= rand() % 3 ; //предполагается что массив начинается с 0-го элемента

Похожие вопросы