谢宾斯基三角上的随机游走

  • A+
摘要记录一下谢宾斯基三角上的随机游走的一段代码。

一段关于谢宾斯基三角上的随机游走的代码,记录一下。

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]

运行上面的代码可以得到下面的图形:

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: