L-Systemは植物の生成を表現する、という想定も含んでいます。
植物が成長する過程では、植物の持っている生成ルールがあるとしても、微細な条件の違いは(たとえば光のあたり方、風のあたり方など)は、ほぼ無作為(ランダム)なものとして捉えることも間違ってはいません。L-Systemにおいて、ランダムに書き換えパターンが選択されるようにコードを書けば、実現できます。
Figure 1.24 の a,b,c を1/3の確率で書き換えるコード
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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を適用する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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%
1 2 3 4 5 | num = random.randint( 0 , 4 ) if num = = 3 : num = 0 elif num = = 4 : num = 1 |
Comments are closed.