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$?


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 '20 at 17:34
  • $\begingroup$ Ah yes, whoops let me correct that. $\endgroup$
    – chuy
    Mar 2 '20 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 '20 at 12:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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