C — Как мне заполнить массив определенными числами

#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, ничего случайного. Затем создайте алгоритм, который перетасовывает массив, многократно меняя местами два элемента со случайными индексами и повторяя это определенное количество раз.