Массив случайных чисел, ограниченный значениями во втором массиве

Может ли кто-нибудь указать мне хорошее объяснение того, как это можно сделать?

Например, допустим, у меня есть массив a [j], инициализированный значениями {3, 4, 5}. Я хочу построить второй массив, заполненный случайными числами, ограниченными снизу нулем и выше значениями в первом массиве. Таким образом, b [i] будет инициализирован случайным числом в следующих диапазонах: {0-3, 0-4, 0-5}

Что является хорошим способом достижения этого в C ++?

0

Решение

Если ваша система имеет arc4random(3) и друзья (и это возможно), это действительно легко:

int a[3] = {3, 4, 5};
int b[3];
for (int i = 0; i < 3; i++)
{
b[i] = arc4random_uniform(a[i] + 1);
}

На странице руководства, указанной выше:

arc4random_uniform() вернет одно 32-битное значение, равномерно распределенное, но менее верхняя граница.

1

Другие решения

Наиболее распространенная функция в C ++ — это функция Rand () который генерирует случайное число между 0 и RAND_MAX, которое определено в cstdlib. Вот почему вам нужно использовать операцию по модулю, в вашем случае это будет:

b[i] = rand() % (a[i]+1)
0