I am trying to write a code that generates an arbitrary set of real $n$-dimensional vectors, whose all pairwise dot products are greater than some lower bound $l$ and less than some upper bound $u$. What is the best way to generate this randomly? I assume the size of the set is less than or equal to $n$. I will also assume that bounds are positive values.
I want some sort of randomness. For example, a set of vectors whose pairwise dot products are all the same wouldn't count.
Partial answer/strategy:
Start with any orthonormal basis, perturb the entries randomly by at most some $\epsilon$. That will yeild inner products in a range $1 \pm f(\epsilon)$ for some function $f$ you can bound.
Then scaling might get you what you need for some choices of bounds.
There is no way to specify a "best" algorithm without more information about why you need these vectors and how you judge the results.