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")