#c
#c
Вопрос:
Например, если у вас есть массив размером [250], и вы хотите заполнить его так, чтобы 10% из них были «1», 30% из них были «2», а остальные просто «3». Как мне подойти к этому? Я знаю, как заполнить массив случайными числами, но я здесь ничего не понимаю.
Комментарии:
1. Полученные вами ответы предполагают, что вы хотите, чтобы числа размещались случайным образом, но это не то, о чем вы спрашиваете. Если это действительно то, что вы хотите знать, пожалуйста, укажите это в вопросе — в противном случае комментарий ниже содержит основную часть правильного ответа на ваш вопрос.
2. Какие-либо конкретные требования к порядку?
int i = 0; while (i < 25) arr[i ] = 1; while (i < 100) arr[i ] = 2; while (i < 250) arr[i ] = 3;
выполняет работу, о которой вы просите.
Ответ №1:
Самый простой, если не обязательно самый быстрый — установите для первых 25 элементов значение 1
, для следующих 75 элементов значение 2
, а для остальных элементов значение 3
, затем выполните перетасовку Фишера-Йейтса, чтобы случайным образом изменить их порядок.
Ответ №2:
Напишите 25x '1'
, 75x '2'
и остальные '3'
, используя простые циклы for, ничего случайного. Затем создайте алгоритм, который перетасовывает массив, многократно меняя местами два элемента со случайными индексами и повторяя это определенное количество раз.