Random trials/Monte Carlo simulations are notoriously slow to converge, with an expected error inversely proportional to the square root of the number of trials.
In this case it is not hard (given a programming language that provides big integers) to do an exact count of cases. Effectively the outcomes are partitions of the 15 balls into some number of boxes (we have thirty boxes to work with, so at least half will be empty).
I wrote a Prolog program to do this (Amzi! Prolog has arbitrary precision integers built in), and got the following results:
$$ Pr(\text{10 or fewer boxes occupied}) = \frac{59486359170743424000}{30^{14}} \approx
0.124371 $$
$$ Pr(\text{2 boxes hold 6 or more balls}) = \frac{30415369655816064000}{30^{14}} \approx
0.063591 $$
The reason I'm dividing by $30^{14}$ in these probabilities is because I normalized the counting to begin with one case where a ball is in one box. If we counted that as thirty cases, we'd need to divide by $30^{15}$. So this keeps the totals slightly smaller. Each ball we add increases the total number of cases by a factor of $30$.
I wrote a recursive rule to build cases for $n+1$ balls from cases for $n$ balls. The first few cases have the following counts:
/* case(Balls,Partition,LengthOfPartition,Count) */
case(1,[1],1,1). /* Count is nominally 1 to begin */
case(2,[2],1,1).
case(2,[1,1],2,29).
case(3,[3],1,1).
case(3,[1,2],2,87).
case(3,[1,1,1],3,812). /* check: for Sum = 3, sum of Count is 900 */
The number of cases generated is modest enough for a desktop, daunting to manage by hand. For $n=15$ there are $176$ partitions. It simplified the Prolog code to maintain the partitions as lists in ascending order.