随手贴一个自己的算法
RandomWalk3D[n_] :=
Module[{xrand, yrand, zrand, k, randompointlist, \[Theta], \[Phi]},
xrand = 0;
yrand = 0;
zrand = 0;
randompointlist = {{0, 0, 0}};
For[k = 1, k <= n,
k++, \[Phi] = RandomReal[{0, 2 \[Pi]}]; \[Theta] =
RandomReal[{0, \[Pi]}]; xrand = xrand + Sin[\[Theta]] Cos[\[Phi]];
yrand = yrand + Sin[\[Theta]] Sin[\[Phi]];
zrand = zrand + Cos[\[Theta]];
randompointlist = AppendTo[randompointlist, {xrand, yrand, zrand}]];
Graphics3D[{Red, Line[randompointlist]}]
]
然后运行RandomWalk3D[200]就行了
你这个问题画图是次要的,你先想想怎么产生随机游走的三维坐标。如果你随机游走的坐标已经已经产生出来了,画图只要两个函数就可以了,假设你的游走坐标是一个List,只要用Plot3D函数配合画折线的函数就可以了。你更大的问题应该是怎么产生这样的三维坐标列表才对吧。
gedian=Tuples[{1, -1}, 3];
steps=Accumulate[Table[gedian[[RandomInteger[{1, 8}]]], {200}]];
Graphics3D[Line[steps]]