Да, это серьезная задача в программировании. Случайные числа принципиально важны для шифрования, генерации паролей и в научных экспериментах.
Подлинно случайное число никаким алгоритмом получить невозможно, хотя существуют более или менее удачные алгоритмы. Их уязвимости -- периодичность появления одних и тех же чисел, зависимость друг от друга последовательных чисел, неравномерность распределения, обратимость.
Для получения случайного числа наиболее распространенный метод -- обращение к внешнему источнику. Таковым, чаще всего выступает счетчик тактов процессора. Некоторые программы отслеживают движения мышки и тому подобное.
Еще:
Может ли компьютер и человек выдать по-настоящему случайное число?
Как в игровых аппаратах генерируются случайные числа?