Понятно, что функция rand генерирует случайное число из заданного интервала.
Но по какому именно алгоритму он работает и возможно ли предугадать которое из чисел выпадет?
Какой именно алгоритм используется я не смогу подсказать (об этом знают только разработчики). Но вот неплохой материал по вашому вопросу.
Так же случайное число получается аппаратным путем