nextGaussian() の可視化

import java.util.Random;
import java.applet.Applet;
import java.awt.Graphics;

public class Test extends Applet {
	private static Random rand = new Random();
	
	public void paint(Graphics g) {
		
		// Appletのウィンドウサイズを800x600に設定
		this.setSize(800, 600);
		
		// ウィンドウサイズの高さの半分(=300)を取得
		int midHeight = this.getHeight() / 2;
		
		for(int x = 0; x < this.getWidth(); x++) {
			
			// ガウス分布で始点のY座標値を設定
			int y = (int) (rand.nextGaussian() * 50 + midHeight);
			
			// 一様分布で始点のY座標値を設定 (参考)
			//int y = (int) ((rand.nextDouble() * 2 - 1) * 50 + midHeight);
			
			// 始点(x, y)から終点(x, midHeight)へ直線を描画
			g.drawLine(x, y, x, midHeight);
		}
	}
}
output:


  • ちなみに一様分布
    • f:id:mtsaggie:20151023073616p:image