AE表达式学习笔记——Random Numbers(随机数)篇
深圳/设计爱好者/25天前/22浏览
版权
AE表达式学习笔记——Random Numbers(随机数)篇
Random Numbers表达式用于生成随机数值,让动画元素产生不可预测但可控的变化。随机数表达式可以为动画添加自然、不可预测的动态效果,比如让多个元素随机移动、闪烁,或模拟自然现象(如雪花飘落、粒子随机分布)等。
seedRandom(seed,timeless = false)
作用:
这是一个用于控制随机数生成器“种子”值的函数,它会初始化随机数生成器的种子,以便:
- 得到可控的随机值(不同的图层或帧得到不同的随机)
- 避免随机值在每一帧都变化(如果不想动画抖动)
语法:
seedRandom(种子,可选布尔值)
seed(种子)
- 一个整数(如 1, 42, 100),作为随机数生成的“种子”;
- 关键点:相同的种子会生成相同的随机序列,确保结果可重现;
- 如果省略或使用变量(如 time),结果会动态变化。
timeless(可选布尔值)
- false(默认):随机序列会随时间变化(例如结合time时,每一帧结果不同);
- true:随机序列完全由seed决定,与时间无关(结果静态不变)。
示例:
生成一个固定的初始偏移位置:
seedRandom(index, true);
offset = random([-50, -50], [50, 50]);
value + offset; //每个图层偏移一点,但动画中不会乱跳
动态但可控的随机:
seedRandom(10, false); // 基于种子+时间变化
random(); // 每帧的随机值仍然不同,但它们是伪随机的、受“10”控制,多次调用可以确保每次渲染时一致(不然表达式每次运行都可能不同)
random()
作用:
基础的随机数生成函数,用于生成一个介于0到1之间的随机数(包括0,但不包括1)。
语法:
random(); // 返回 0 ≤ 随机数 < 1 的值,例如 0.3、0.7、0.999...
示例:
// RGBA 随机颜色(每个通道 0~1)
[random(), random(), random(), 1];
random(maxValOrArray)
作用:
这是random()函数的扩展用法,用以生成一个0到max之间的随机值。
语法:
random(最大值)
示例:
random(100);//返回一个在0到100之间的随机数
random(minValOrArray,maxValOrArray)
作用:
这是random()函数的更灵活用法,用以生成指定范围内的随机数,或者在两个数组之间随机混合数值。
语法:
random(最小值,最大值)
示例:
//限定在一个范围内活动
random([200,200], [1920,1080]);
gaussRandom()
作用:
生成一个在0到1范围内、遵循高斯分布的随机数,与普通的random()不同,gaussRandom()的结果更集中在中间(约 0.5 附近),而极小值和极大值较少出现。
高斯分布的特点是生成的随机数更集中在平均值附近,越远离平均值的数值出现概率越低,这使得结果更自然、平滑,适合模拟物理运动或自然变化。
示例:
gaussRandom(maxValOrArray)
作用:
这是一个用于生成高斯分布随机数的函数。maxValOrArray是一个数值或数组,用于指定生成随机数的最大值或范围。如果是单个数值,比如gaussRandom(100),则返回0到100左右的高斯分布随机值,但集中在中间(如50左右),极端值(靠近0或靠近100)较少出现。
语法:
gaussRandom(最大值)
示例:
// 生成的点在y轴方向上呈现0到+100高斯分布
transform.yPosition+gaussRandom(-100);
gaussRandom(minValOrArray,maxValOrArray)
作用:
gaussRandom()函数的扩展形式,用于生成指定范围内的高斯分布随机数。它允许你精确控制随机值的最小值和最大值,使结果更符合特定需求。
语法:
gaussRandom(最小值,最大值)
示例:
// 返回 -100 到 100 之间的 数值,多数集中在 0 附近
Math.floor(gaussRandom(-100,100))
noise(valOrArray)
作用:
这是一个用于生成分形噪声的函数,与普通随机函数(如 random() 或 gaussRandom())生成的离散、跳跃式随机值不同,它生成的是平滑过渡的随机值,其结果具有连续性和关联性,不会产生突兀的突变。
语法:
valOrArray:可以是一个数值或数组(如[x, y]),用作“输入种子”,决定输出结果,只要输入不变,noise()输出也不会变。
noise(输入种子)
示例:
物体在x轴上左右晃动:
amp = 100; // 最大摆动幅度(像素)
speed = 1; // 控制速度
xOffset = noise(time * speed) * amp;
[position[0] + xOffset, position[1]]
1
Report
声明
2
Share
相关推荐
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
You may like
相关收藏夹
Log in
1Log in and synchronize recommended records
2Log in and add to My Favorites
评论Log in and comment your thoughts
分享Share






































































