Insufficient privileges as a definer of package
When you compile a procedure that executes with the current_user's authorisation, then the current user must be able to do everything that the Procedure wants to do. 

When you compile a procedure that executes with the definer's authorisation, then the owner of that procedure must be able to do everything that the Procedure wants to do. 

Any and all privileges needed by such a procedure must be directly granted to the owning account; they cannot be conferred through a Role, even if that Role is granted "by default". 

You probably need to grant "create table" to the account that owns the procedure. 

That said, having a procedure to spin up tables at random strikes me as a slightly odd thing to want to do.