网易首页 > 网易号 > 正文 申请入驻

Ae 表达式语言引用:Random Numbers

0
分享至

Random Numbers(随机数方法)提供了多样化的随机数生成工具,包括均匀分布和高斯分布的随机数,以及基于柏林噪声的平滑随机变化。

这些方法使设计师能够创建丰富、多变且自然的动画效果,从基本的随机动画到复杂的程序化纹理生成。

seedRandom( seed, timeless )

用于设置随机数种子值。

参数

seed :用于设置随机数生成器的种子值(Number)。不同的 seed 会产生不同的随机数序列。

timeless :Boolean,可选。默认为 false。如果设置为 true,则不使用当前时间作为随机数生成的输入,这样生成的随机数在时间上是恒定的。

返回值:无。该方法仅用于设置随机数生成器的种子,不返回任何值。

应用:

通过设置相同的种子值,可以在多个图层或项目中生成一致的随机效果。 或者,确保在不同时间点或不同项目中获得相同的随机结果,以便进行调试和测试。

// 设置随机种子为42,生成可重复的随机数
seedRandom(42, true);
randomValue = random();
randomValue;

// 设置随机种子为123,生成一致的随机位置偏移
seedRandom(123, true);
offset = random([-50, -50], [50, 50]);
position + offset;

//对位置属性设置了固定种子的形状图层,复制后有同样的随机数值
seedRandom(50);
x =wiggle(1,100);
[x[0],value[1]];

//不透明度属性的以下表达式可将不透明度值设为不随时间而改变的随机值
seedRandom(123, true);
random()*100;

seedRandom 必须在调用其他随机数函数(如 random、gaussRandom、wiggle 等)之前使用,以确保随机数的生成顺序和结果一致。

random( )

生成一个在 0 到 1 之间的随机数。

参数:无

返回值:返回 0 ~ 1 之间的随机数(Number)。

应用:

用于需要随机性但不需要特定范围的场景。比如,生成随机的动画属性,如位置、缩放或旋转等。该方法依赖于当前的随机数种子。

// 为图层的不透明度生成一个随机值
opacity = random() * 100; // 0 到 100 之间
opacity;

// 创建一个简单的随机缩放效果
scaleFactor = random() * 50 + 50; // 50 到 100 之间
[scaleFactor, scaleFactor];

random(maxValOrArray)

生成 0 到 maxValOrArray 之间的随机数值或数组。

参数

maxValOrArray :数值(Number)或数组(Array)。

返回值:如果参数是数值,则返回一个在 0 到该数值之间的随机数(Number);如果参数是数组,则返回一个与输入数组维度相同的随机数数组(Array),每个元素在 0 到对应的 maxValOrArray 元素之间。

应用:

生成特定范围内的随机数,用于控制动画属性的变化。

或者,从预定义的选项中随机选择一个值,如颜色、图层样式等。

// 为图层的位置生成一个在0到500之间的随机X
坐标x = random(500);
y = position[1];[x, y];

// 从预定义的颜色数组中随机选择一个颜色
seedRandom(1,false); // 设置种子以确保可重复性
// 定义颜色数组,每个颜色为一个包含四个数值的数组
colors = [ [1, 1, 1,1], // 白色  
[1, 0, 0,1], // 红色  
[0, 1, 0,1], // 绿色  
[0, 0, 1,1]  // 蓝色];
// 生成一个随机索引,范围从0到colors.length - 1
randomIndex = Math.floor(random(0, colors.length));
// 通过随机索引从颜色数组中选择一个颜色
randomColor = colors[randomIndex];
// 返回选中的随机颜色
randomColor;

random(minValOrArray, maxValOrArray)

生成在 minValOrArray 到 maxValOrArray 之间的随机数值或数组。

参数

minValOrArray :最小的数值(Number)或数组(Array)。

maxValOrArray :最大的数值(Number)或数组(Array)。

返回值:当参数为两个数值时,返回一个在 minValOrArray 到maxValOrArray 之间的随机数(Number)。当参数为两个数组时,函数逐元素生成一个在对应最小值和最大值之间的随机数,返回一个新的数组(Array)。

应用:

精确控制生成随机数的下限和上限。

创建具有特定范围的随机位置、缩放或旋转矢量。

// 为图层的不透明度生成一个在50到100之间的随机值
opacity = random(50, 100);
opacity;

// 为图层的位置生成一个在[-100, 100]范围内的随机X和Y坐标
randomPosition = random([-100, -100], [100, 100]);
randomPosition;

gaussRandom( )

生成一个具有高斯(钟形)分布的随机数。

参数:无

返回值: 生成的随机数(Number)大部分集中在 0 到 1 之间,约有 90% 的结果在此范围内,其余 10% 超出该范围。

应用:

创建更自然、符合人类感知的随机动画效果,如抖动或波动。

用于需要正态分布随机数的场景,如模拟物理现象。

// 使用高斯随机数创建更自然的抖动效果
amplitude = 50;
jitter = gaussRandom() * amplitude;
[position[0] + jitter, position[1] + jitter];

// 为图层的旋转添加高斯分布的随机偏移
rotationOffset = gaussRandom() * 10; // 平均偏移0度,标准差10度
rotation + rotationOffset;

gaussRandom(maxValOrArray)

生成在 0 到 maxValOrArray 之间的呈高斯分布的随机数值或数组。

参数

maxValOrArray :数值(Number)或数组(Array)。

返回值:如果参数是数值,则返回一个具有高斯分布的随机数(Number);如果参数是数组,则返回一个与输入数组维度相同的随机数数组(Array),每个元素具有高斯分布。

应用:

通过调整标准差,控制随机数的分布范围。

为矢量属性生成具有不同分布的随机值。

// 为图层的位置生成一个遵循高斯分布的随机X坐标,标准差为100
x = gaussRandom(100);
y = position[1];
[x, y];

// 为图层的位置生成一个3D随机矢量,标准差为50
randomVec = gaussRandom([50, 50, 50]);
[position[0] + randomVec[0], position[1] + randomVec[1], position[2] + randomVec[2]];

gaussRandom(minValOrArray, maxValOrArray)

生成在 minValOrArray 到 maxValOrArray 之间的呈高斯分布的随机数值或数组。

参数

minValOrArray :最小的数值(Number)或数组(Array)。

maxValOrArray :最大的数值(Number)或数组(Array)。

返回值:当参数为两个数值时,返回一个遵循高斯分布的随机数,平均值为 (minValOrArray + maxValOrArray)/2,标准差根据范围计算。当参数为两个数组时,函数对两个数组中的对应元素应用高斯分布,返回一个新的数组。

应用:

生成具有指定范围的高斯分布随机数。

为矢量属性生成具有特定范围的高斯分布随机值。

// 为图层的位置生成一个遵循高斯分布的随机X坐标,范围在-50到50之间
x = gaussRandom(-50, 50);
y = position[1];
[x, y];

// 为图层的缩放生成一个遵循高斯分布的随机矢量,X在80到120之间,Y在90到110之间
randomScale = gaussRandom([80, 90], [120, 110]);
randomScale;

noise(valOrArray)

返回一个在 -1 到 1 之间的基于柏林噪声(Perlin noise)的连续且平滑变化的随机数。

参数

valOrArray : 如果是数值(Number),表示一个单一的输入值,通常与时间 (time) 或其他动态参数相关联;如果是数组(Array),通常用于表示多维输入(如二维或三维坐标)。

返回值:参数为数值时,返回一个在 -1 到 1 之间的随机数(Number)。参数为数组时,返回一个在 -1 到 1 之间的随机数(Number),该数值基于数组中各元素的组合。

二维噪声:noise([x, y]) 以及三维噪声:noise([x, y, z])。每个元素代表一个独立的维度坐标,影响噪声值的计算。

噪声值基于输入数组中各维度的坐标,通过复杂的算法计算得出。不同的维度组合会产生不同的噪声模式,允许生成复杂且独特的动画效果。

应用:

此方法基于柏林噪声,这意味着相邻的两个输入值的返回值往往也是相邻的。与传统的 random() 方法不同,noise() 生成的数值具有连续性和平滑性,这使得它非常适合用于模拟自然和流畅的动画效果,如自然的摇晃、飘动或波动。

//示例 1:为图层生成平滑的旋转动画
// 生成基于时间的噪声值
noiseValue = noise(time);
// 将噪声值映射到旋转范围,例如 -30 到 30 度
rotation = noiseValue * 30;
// 应用到旋转属性
rotation;

//示例 2:为位置生成平滑的随机偏移量
// 定义噪声的基础输入,例如使用当前时间
noiseInput = time;
// 生成噪声值,确保了 X 轴和 Y 轴的噪声值是独立的。这意味着 X 轴的运动不会直接影响 Y 轴的运动,反之亦然,从而产生更加自然和多样化的动画效果。
noiseX = noise([noiseInput, 0]); //生成基于 noiseInput 和 0 的噪声值,用于X轴。
noiseY = noise([0, noiseInput]); //生成基于 0 和 noiseInput 的噪声值,用于Y轴。
// 将噪声值映射到偏移量范围,例如 -50 到 50 像素
offsetX = noiseX * 50;
offsetY = noiseY * 50;
// 应用到位置属性
[position[0] + offsetX, position[1] + offsetY];

//示例 3:生成三维平滑的旋转动画
// 定义噪声输入,通常与时间相关
noiseInput = time;
// 生成X轴、Y轴和Z轴的噪声值
noiseX = noise([noiseInput, 0, 0]);
noiseY = noise([0, noiseInput, 0]);
noiseZ = noise([0, 0, noiseInput]);
// 定义旋转的幅度
amplitude = 30; // 度
// 计算旋转角度
rotationX = noiseX * amplitude;
rotationY = noiseY * amplitude;
rotationZ = noiseZ * amplitude;
// 设置新的旋转
[rotationX, rotationY, rotationZ];

“点赞有美意,赞赏是鼓励”

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
不得不佩服郭德纲这只“老狐狸”,确实有点东西!教科书级别的!

不得不佩服郭德纲这只“老狐狸”,确实有点东西!教科书级别的!

乐悠悠娱乐
2025-12-10 11:16:01
西部排名又变了:快船创NBA奇迹,火箭剑指前三,3队排名互换

西部排名又变了:快船创NBA奇迹,火箭剑指前三,3队排名互换

篮球大视野
2026-01-02 16:00:24
一种“新型养老”出现了:既不雇保姆也不去养老院,还不拖累子女

一种“新型养老”出现了:既不雇保姆也不去养老院,还不拖累子女

黄家湖的忧伤
2025-08-19 16:54:53
意甲榜首易主:1-0,AC米兰2连胜,反超死敌登顶,莱奥一剑封喉

意甲榜首易主:1-0,AC米兰2连胜,反超死敌登顶,莱奥一剑封喉

侧身凌空斩
2026-01-03 05:39:30
2026有望爆发的十大科技趋势!(附龙头名单)

2026有望爆发的十大科技趋势!(附龙头名单)

林子说事
2026-01-02 15:36:28
火箭杜兰特在卡姆·托马斯与篮网续约不成后,呼吁NBA围绕他建队

火箭杜兰特在卡姆·托马斯与篮网续约不成后,呼吁NBA围绕他建队

好火子
2026-01-03 07:09:34
沙利文承认:佩洛西2022窜台,使美国付出了惨痛代价!

沙利文承认:佩洛西2022窜台,使美国付出了惨痛代价!

华山穹剑
2026-01-02 20:28:02
向太太敢说了!向华强今年已经78了,但是她和向华强还有X生活!

向太太敢说了!向华强今年已经78了,但是她和向华强还有X生活!

心静物娱
2025-12-24 11:02:28
68岁冯巩现状曝光:住100平小屋十分节俭,儿子月薪几千他很满意

68岁冯巩现状曝光:住100平小屋十分节俭,儿子月薪几千他很满意

洲洲影视娱评
2025-12-31 17:09:43
不管白痰黄痰黏痰,陈皮这样搭配,连咳带痰一扫光

不管白痰黄痰黏痰,陈皮这样搭配,连咳带痰一扫光

江江食研社
2026-01-02 07:30:12
看到李嘉诚大儿媳才明白,为啥梁洛施连生三子,仍进不了李家大门

看到李嘉诚大儿媳才明白,为啥梁洛施连生三子,仍进不了李家大门

涵豆说娱
2025-12-16 18:00:05
续航灭霸!新机官宣:1月5日,全新发布登场!

续航灭霸!新机官宣:1月5日,全新发布登场!

科技堡垒
2026-01-02 12:17:04
白嫖羽绒服女子已社死!关键证据曝光,不止穿过一次,商家恐闭店

白嫖羽绒服女子已社死!关键证据曝光,不止穿过一次,商家恐闭店

相思赋予谁a
2026-01-01 01:24:07
“台独”若再看不清两岸历史大势就彻底无药可救了

“台独”若再看不清两岸历史大势就彻底无药可救了

环球时报国际
2026-01-02 15:09:34
连民心都变了!台海演习结束后台最新民调,老百姓看清了一件事

连民心都变了!台海演习结束后台最新民调,老百姓看清了一件事

始于初见见
2026-01-03 01:09:28
天赋都要溢出了!快船甚至可以考虑让内线新秀进入先发阵容?

天赋都要溢出了!快船甚至可以考虑让内线新秀进入先发阵容?

稻谷与小麦
2026-01-03 01:18:14
中国财政供养人员达6846万?结构失衡才是财政压力的核心

中国财政供养人员达6846万?结构失衡才是财政压力的核心

流苏晚晴
2025-12-04 19:27:08
封关后第一个节假日,海南多个免税城游客爆满:黄金店门口排起长队,买苹果手机能省近千元

封关后第一个节假日,海南多个免税城游客爆满:黄金店门口排起长队,买苹果手机能省近千元

极目新闻
2026-01-02 16:15:48
台军专家一语惊人:台军已经把机密信息,都双手奉送给解放军了。

台军专家一语惊人:台军已经把机密信息,都双手奉送给解放军了。

时时有聊
2026-01-01 21:02:36
巨星要来?媒体曝快船启动三巨头计划,或为了哈登伦纳德清空未来

巨星要来?媒体曝快船启动三巨头计划,或为了哈登伦纳德清空未来

拾叁懂球
2026-01-02 17:49:03
2026-01-03 09:15:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1684文章数 72关注度
往期回顾 全部

科技要闻

新势力年榜:零跑险胜华为,蔚来小鹏新高

头条要闻

"最快女护士"刚夺冠就宣布辞职 曾50天内赢得20万奖金

头条要闻

"最快女护士"刚夺冠就宣布辞职 曾50天内赢得20万奖金

体育要闻

快船似乎又行了

娱乐要闻

田亮一家新年全家福!森碟变清纯少女

财经要闻

车企2026开年大促 含16个品牌近70款

汽车要闻

方程豹全年销量超23.4万辆 同比暴增316.1%

态度原创

教育
数码
旅游
家居
艺术

教育要闻

震撼!人大附朝阳高考曝708分屏蔽生

数码要闻

Clicks首款智能手机Communicator发布:带全键盘的“第二设备”

旅游要闻

视窗|百年历史街区的活力密码

家居要闻

无形有行 自然与灵感诗意

艺术要闻

下雪时的院子,更加适合倾听自己

无障碍浏览 进入关怀版