Nejjednodušší metoda je použití rand a rozdělení rozsahu vrácených hodnot. Takže kdyby vracel 0..99, tak 0..14 bude 1, 15..39 bude 2, atd. Samozřejmě limity přepočítat podle hodnoty RAND_MAX.
Ale náhoda je "blbec" a ve tvém případě možná půjde o to, aby to procentuální zastoupení přesně sedělo v každé sadě. Zase primitivní řešení, pokud celkový počet není moc velký, je naplnit pole tak, aby 15% byly jedničky, atd. a pak ho náhodně zamíchat.
Od C++11 je standardizovaná knihovna random, která by tyhle věci měla umět, takže cokoliv složitějšího psát sám nemá moc smysl. Ale nemám s ní zkušenosti a nechce se mi to číst.
Jako každé cvičení to asi staví na něčem, co bys měl znát. Těžko říct, co to je.