No, brakuje paru rzeczy, takich jak srand(time(NULL)) wywołane na początku (potrzebne do rand(), żeby na początku pobrać czas, do tego trzeba zainkludować bibliotekę time.h) i jeszcze dwa średniki po p=NULL (swoją drogą, to ta linijka nie jest raczej potrzebna, wskaźnik wtedy się ustawia na NULL, czyli na nic, czyli że nie wiem po co to jest :)), int i możesz zadeklarować w pętli for, czyli tak for(int i=0;...). A tak poza tym to program spełnia swoją funkcję i powinien działać :)
Edit: słuszna uwaga endo93, literówka w alokacji dynamicznej, nie folat, tylko float ;) I tak jak powiedział, powinnaś pisać troszkę staranniej, albo po skończeniu przejrzeć kod jeszcze raz, żeby upewnić się, że nie ma żadnych błędów "ortograficznych" ;)