How to randomly construct a square full-ranked matrix with low determinant? How to randomly construct a square (1000*1000) full-ranked matrix with low determinant?
I have tried the following method, but it failed.
In MATLAB, I just use:
n=100;
A=randi([0 1], n, n);
while rank(A)~=n
A=randi([0 1], n, n);
end
The above code generates a random binary matrix, with the hope that the corresponding determinant can be small.
However, the determinant is usually about 10^49, a huge number.
Not to mention when n>200, the determinant is usually overflowed in MATLAB.
Could anyone have comments how I can generate matrix (could be non-binary) with very low determinant (e.g. <10^3)?

The determinant of $e^B$ is $e^{\textrm{tr}(B)}$ (wiki) and $e^B$ is always invertible, since $e^B e^{-B}=\textrm{Id}$. So, if you have a matrix $B$ with negative trace then $\det e^B$ is positive and smaller than $1$. Using this idea I wrote the following matlab script which generates matrices with "small" determinant:
n=100;
for i=1:10
    B=randn(n);
    A=expm(B);
    det(A)
end

I generate the coefficients using a normal distribution with mean $0$, so that the expected trace of B is $0$ (I think) and therefore the expected determinant of $A$ is $1$.
