Depends on what you call efficient. Since the naive algorithm is O(n!), I'd say O(n^{3}) would count as efficient, wouldn't it?
Then there is an efficient algorithm to compute the determinant, use Gauß elimination to transform the matrix into upper (or lower) triangular form, keeping track of swappings and multiplication of rows/columns by a scalar, then multiply the entries on the diagonal.

Il faut respecter la montagne -- c'est pourquoi les gypaètes sont là.

Numerical Recipes (available on-line) shows how to reduce this to n^{log27}, but comments that the bookkeeping involved probably makes it not worthwhile
Sorry, that was matrix multiply, not determinant

Last edited by rmillika on Thu Apr 09, 2009 10:37 pm, edited 2 times in total.

probably check for non-zero determinant can be faster than computing it. By the way,
the rank of the matrix made of random coefficients is one of the tests of Marsaglia
battery of the randomness tests.