Могу ли я указать условия для функции rand ()? - PullRequest
1 голос
/ 07 января 2020

Я хочу сгенерировать случайное число, которое будет в диапазоне от 1 до 6 (я знаю, как это сделать), но не будет равно 4 другим переменным (например, их имена «num1», « num2 "," num3 "и" num4 ") в алгоритме. Я могу это сделать? и как?

1 Ответ

3 голосов
/ 07 января 2020

Это не (в настоящее время) ясно в вопросе, но из пояснения в комментариях:

Вы хотите четыре переменные, каждая со случайным значением от 1 до 6 (включительно), но нет повторений?

Предположим, что вам на самом деле нужно 5 переменных, поскольку в вопросе указано:

не будет равно 4 другим переменным

тогда, так как вам нужно 5 уникальных переменных из 6 возможностей. Тогда самое простое решение - выбрать случайным образом только одну из возможностей, которую можно опустить. Кроме того, разумное средство хранения 5 значений одного и того же типа заключается в использовании одной переменной массива , а не пяти отдельных переменных - это делает код намного проще.

int num[5] ;
int omit = 1 + rand() % 6 ;
for( int i = 0, j = 0; i < sizeof(num) / sizeof(*num); i++, j++ )
{
    if( i != omit ) num[j] = i ;
}

Обратите внимание, что выражение 1 + rand() % 6 будет иметь смещение для некоторых значений, даже если rand() были полностью случайными. Упражнение для читателя, если это проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...