Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

1/fゆらぎ

なんだか現実逃避ぎみ。なのでゆらいでみました。

import random
def one_over_fnoise():
    t = random.random() # initial value
    while True:
        if 0 < t < 0.5:
            tt = t + 2 * t**2
        elif 0.5 <= t < 1:
            tt = t - 2 * (1 - t)**2
        else:
            assert False
        yield tt
        t = tt

1/fゆらぎな数値を生成するジェネレータです。こんな感じで使えます。

import Image, ImageDraw

WIDTH, HEIGHT = 1024, 300        
image = Image.new("RGB", (WIDTH, HEIGHT))
d = ImageDraw.Draw(image)
pos = 0
for x in one_over_fnoise():
    d.line((pos, 0)+(pos, HEIGHT))
    pos += x * 5
    if pos > WIDTH:
        break

image.save("sample.png", "PNG")

実行結果: