Может ли кто-нибудь указать мне хорошее объяснение того, как это можно сделать?
Например, допустим, у меня есть массив a [j], инициализированный значениями {3, 4, 5}. Я хочу построить второй массив, заполненный случайными числами, ограниченными снизу нулем и выше значениями в первом массиве. Таким образом, b [i] будет инициализирован случайным числом в следующих диапазонах: {0-3, 0-4, 0-5}
Что является хорошим способом достижения этого в C ++?
Если ваша система имеет 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-битное значение, равномерно распределенное, но менее верхняя граница.
Наиболее распространенная функция в C ++ — это функция Rand () который генерирует случайное число между 0 и RAND_MAX, которое определено в cstdlib. Вот почему вам нужно использовать операцию по модулю, в вашем случае это будет:
b[i] = rand() % (a[i]+1)