L-Systemは植物の生成を表現する、という想定も含んでいます。
植物が成長する過程では、植物の持っている生成ルールがあるとしても、微細な条件の違いは(たとえば光のあたり方、風のあたり方など)は、ほぼ無作為(ランダム)なものとして捉えることも間違ってはいません。L-Systemにおいて、ランダムに書き換えパターンが選択されるようにコードを書けば、実現できます。
Figure 1.24 の a,b,c を1/3の確率で書き換えるコード
s = "F"
for i in range(int(x)):
num = random.randint(0,2)
print num
if num == 0:
s = rewrite(s,'F',"F[+F]F[-F]F")
elif num == 1:
s = rewrite(s,'F',"F[+F]F[-F][F]")
elif num == 2:
s = rewrite(s,'F',"FF-[-F+F+F]+[+F-F-F]")
print s
a = s
確率をコントロール
num == 2 となる確立を倍に増やす。
0が出る確率: 25%
1が出る確率: 25%
2が出る確率: 50%
ランダムに 0~3 の範囲の数値を生成し 3 が出たら 2を適用する。
s = "F"
for i in range(int(x)):
num = random.randint(0,3)
if num == 3:
num = 2
print num
if num == 0:
s = rewrite(s,'F',"F[+F]F[-F]F")
elif num == 1:
s = rewrite(s,'F',"F[+F]F[-F][F]")
elif num == 2:
s = rewrite(s,'F',"FF-[-F+F+F]+[+F-F-F]")
print s
a = s
下のコードで、以下のように確率をコントロールできます。
0が出る確率: 40%
1が出る確率: 40%
2が出る確率: 20%
num = random.randint(0,4)
if num == 3:
num = 0
elif num == 4:
num = 1

Comments are closed.