Вы можете легко набрать код и посмотреть, что происходит. Как уже указывалось, ключевое необходимое изменение заключается в том, что вы должны определить два случайных значения при входе в функцию, прежде чем проверять, равно ли одно из них (или оба) 3. Это легко достигается с помощью do { … } while (…);
l oop.
Несмотря на предположения об обратном, условие l oop в вопросе в порядке, хотя его необходимо преобразовать из while
l oop. L oop продолжается, пока ни один из элементов не равен 3; как только один или другой равен 3 (или оба равны 3, но он проверяет только первый элемент, temp[0]
), l oop останавливается.
Например (файл rand19.c
):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static void randomSet(int temp[])
{
do
{
temp[0] = rand() % 4;
temp[1] = rand() % 4;
printf("-- %d %d\n", temp[0], temp[1]);
} while (temp[0] != 3 && temp[1] != 3);
}
int main(void)
{
srand(time(0));
int temp[2];
for (int i = 0; i < 5; i++)
{
randomSet(temp);
printf("%d: %d %d\n", i, temp[0], temp[1]);
}
return 0;
}
Пример выполнения:
$ rand19
-- 2 0
-- 1 3
0: 1 3
-- 0 3
1: 0 3
-- 0 3
2: 0 3
-- 2 2
-- 0 1
-- 3 0
3: 3 0
-- 2 0
-- 2 0
-- 1 0
-- 1 0
-- 2 3
4: 2 3
$ sleep 60
$ rand19
-- 3 3
0: 3 3
-- 1 3
1: 1 3
-- 1 0
-- 3 1
2: 3 1
-- 3 2
3: 3 2
-- 0 2
-- 1 1
-- 1 2
-- 0 1
-- 1 2
-- 2 1
-- 3 1
4: 3 1
$