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.