一段关于谢宾斯基三角上的随机游走
的代码,记录一下。
n = 5;
steps = 1000;
dir = {{0, 0}, {1, 0}, {0, 1}};
start = FromDigits[#, 2] & /@Transpose@Append[RandomChoice[dir, n - 1], RandomInteger[1, 2]];
move[pt_] :=
With[{c = RandomChoice@Pick[-dir, BitAnd @@ (# + pt) & /@ -dir, 0]},
pt + c + RandomChoice@DeleteCases[dir, -c]];
move[{2^n, 0}] := {2^n - 1, RandomInteger@1};
move[{0, 2^n}] := {RandomInteger@1, 2^n - 1};
move[{0, 0}] := RandomChoice@Rest@dir;
ListLinePlot[{#1 + #2/2, #2*Sqrt@3/2} & @@@
NestList[move, start, steps],
PlotRange -> {{0, 2^n}, {0, 2^n*Sqrt[3]/2}},
AspectRatio -> Sqrt[3]/2]
运行上面的代码可以得到下面的图形:
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论