【发布时间】:2011-02-05 16:13:15
【问题描述】:
我正在尝试用随机数填充数组,但随机数之间必须有一定的最小距离。
我已经用 0 - 100 之间的 5 个随机数填充了一个数组:
private var myArray:Array = new Array();
for (var i:uint = 0; i < 5; i++)
myArray.push(Math.round(Math.random() * 100));
接下来我按数字顺序对数组进行了排序:
myArray.sort(Array.NUMERIC);
在填充和排序之后,让我们假设 myArray 现在包含这些值:
26, 27, 42, 92, 97
现在我想重置一些或所有数组值,如果需要的话,以便它们彼此之间至少有最大值 (100) 的某个百分比(比如说 10%) .
前 2 个值(26 和 27)至少相差 10%,后 2 个值(92 和 97)也没有。但是,如果我只是将值 27 从 26 移开 10%,以便 27 更改为 37,则 37 现在与下一个值 42 冲突。
填充随机数数组的最佳方法是什么,这些随机数的值彼此之间至少相差一定百分比,但仍然是随机的。
这可能不言而喻,但我正在寻找一种可移植的解决方案,其中最大值和最小分布百分比可以是任何东西,而不仅仅是我上面的示例。
【问题讨论】:
-
你关心订单吗?例如,
10 30 50和50 10 30是不同的,还是你无论如何都要排序? -
是的,结果数组的顺序必须按数字排序。
标签: arrays actionscript-3 math random distribution