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

А в данном случае функция random была вызвана один раз 
И случайное значение присвоилось переменной random

import random

for timer in range(3):
    time.sleep(0.3)
    open(str(random.randint(1 , 1000)) + ".dll" , 'w')