Stochastic(確率的) L-systems

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.