Consider $n$-dimensional vectors $c^i = \left(c^i_1, c^i_2 ...c^i_n \right)$ , whose entries are complex and generated at random. These vectors are normalized such that

$$|c^i|^2 = 1.$$

Using Mathematica, how do I construct such a set of $k$ vectors $\{ c^i\}$? Does it numerically satisfy the following relation in the limit of large-$n$,

$$|(c^i)^* c^j| <<1, \quad i \neq j ?$$

Note: As an explicit example, can this be seen numerically for $n \approx 1000$?


1 Answer 1


One way to generate some random vectors that satisfy your normalization rule:

v = RandomPoint[Sphere[1000],100] /. {x_?NumericQ :> x Exp[I RandomReal[{0, 2 Pi}]]}

v will be a set of 100 1000-d vectors where


will yield all 1. Now we look at your test

test = Outer[Abs@*Dot, Conjugate[v], v, 1];

ListDensityPlot[test, PlotLegends -> Automatic,ScalingFunctions -> "Log"]


A slice:


  • $\begingroup$ Forgot to say this, thank you. It was immensely useful to me. A typo, you meant "test = Outer[Abs@*Dot, Conjugate[v], v, 1]", right? $\endgroup$ Feb 28, 2020 at 17:34
  • $\begingroup$ Ah yes, whoops let me correct that. $\endgroup$
    – chuy
    Mar 2, 2020 at 16:02
  • $\begingroup$ I have another question which is related to your this answer. Please have a look! mathematica.stackexchange.com/q/215687/60781 $\endgroup$ Mar 3, 2020 at 12:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.