设置 gauss、rand 和 sphrand 函数用于生成随机数的种子值。如果为 seed 指定一个值,然后反复执行 gauss、rand 和 sphrand 函数,将生成相同的随机数序列。有关说明,请参见下面的示例和重新生成随机性。
假设创建一个名为 Ball 的 NURBS 球体,然后输入以下表达式:
Ball.translateX = rand(5);
在回放动画时,Ball 的 translateX 属性会收到一个介于 0 和 5 之间的随机值,例如 1.392。在播放动画时,translateX 属性会对每个帧收到一个介于 0 和 5 之间的不同随机值。
再次回放动画时,translateX 属性会收到一个不同于第一次回放时所收到值的值,例如 3.223。
再次播放动画时,translateX 属性会对每个帧收到一个不同于它在第一次播放动画时所收到值的值。简而言之,每次 rand (5) 执行时,它都会产生不同的随机值。
if (frame == 1) seed(1); Ball.translateX = rand(5);
将场景回放到帧 1 会执行 seed (1) 函数。然后,它为 translateX 指定一个介于 0 和 5 之间的随机值,例如 4.501。
在播放动画时,rand (5) 函数会执行每个帧,并返回一个不同的值。下面是所返回值的示例:
帧 | 值 |
---|---|
1 | 4.501 |
2 | 3.863 |
3 | 3.202 |
4 | 3.735 |
5 | 2.726 |
6 | 0.101 |
每次回放和播放动画时,translateX 都会收到同一随机值序列。
对于不同的种子值,返回的数字序列将有所不同。您无法基于种子值预测数字序列中的值。
if (frame == 1) seed(500); Ball.translateX = rand(5);
帧 | 值 |
---|---|
1 | 4.725 |
2 | 2.628 |
3 | 0.189 |
4 | 0.004 |
5 | 4.834 |
6 | 0.775 |
seed(1); Ball.translateX = rand(5);
在回放动画时,Ball 的 translateX 属性会收到值 4.501。在播放动画时,translateX 属性会在每次表达式执行时收到 4.501。
由于您在每次执行 rand (5) 之前为 seed 指定值 (1),因此这将初始化随机数序列。因此,在每次执行 rand (5) 函数时,它会返回数字序列的第一个值。