书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
0.3 概率和非均匀分布
1、概率
- 在计算机图形系统中,用随机方式构建系统是最容易的。
- 对自然界建模,在这类场景中用随机方式构建模型是不合理的,尤其是对有机体或者具有自然外形的事物建模。
- 在遗传算法中,我们需要一种执行“选择”的方法。优胜劣汰算法
0.4 随机数的正态分布
1、正态分布
所有的观测值都聚集在平均值附近,这样的分布称作“正态”分布。它还称作高斯分布(以数学家卡尔·弗里德里希·高斯命名),在法国正态分布称作拉普拉斯分布(以皮埃尔-西蒙-普拉斯命名)。
绘制正态分布时,你会看到类似下图的曲线,它一般称为钟形曲线。
- 这条曲线由一个数学函数产生,该数学函数描述了在给定平均值(通常以希腊字母μ表示)和标准差(以希腊字母σ表示)下的概率分布情况。
- 标准差很小时的正态分布,大部分数据都紧密集中在平均值附近。
- 标准差很大时的正态分布,数据相对分散地分布在平均值两边。
- 标准差是离均差平方和平均后的方根。
2、高斯分布
运用Random类,生成一个符合正态分布的随机数。调用
nextGaussian()函数。
-
nextGaussian()函数
默认以下面两个参数生成符合正态分布的随机数:正态分布的平均值等于0,标准差等于1。
如果我们需要一个平均值为320(宽度为640的窗口的正中位置),标准差为60像素的正态分布,可以简单地处理参数:将它乘以标准差并加上平均值。 -
用途: 模拟用各种颜色的点模拟颜料飞溅在画板上的效果
3、实例
import java.util.Random;
Random generator;
//我们使用generator(生成器)作为变量名,因为此处可以认为是一个随机数生成器
void setup() {
size(400,300);
generator = new Random();
}
void draw(){
float num = (float) generator.nextGaussian();
//注意,nextGaussian()的返回值类型是double
float sd = 60;
float mean = 200;
float x = sd * num + mean; //乘以标准差,再加上平均值
noStroke();
fill(0, 10);
ellipse(x,150,16,16);
}
![](https://img.haomeiwen.com/i17748967/4b61aa8c89e43974.gif)
网友评论