我有两个一维数组,我想在处理中用 10 个唯一的随机 x,y 值填充它们。
例如:
x y
- -
3, 9
2, 4
6, 2
7, 5
我的数组是:
表 1 的 X 值和
Table2 用于 Y 值。
我的问题是,如果数字 3,9 已经存在,我不希望 9,3 存储在数组中。
我可以识别 x,y 值(或 y,x)何时已存在,但一旦替换它,我无法检查新生成的随机数是否存在于以前的索引中。
这是我到目前为止所尝试过的。但是,如果已经存在 3 个值,则数组 Table1 和 Table2 将仅存储 7 个值,而不是 10 个。
for (int i=0; i<10; i++) {
x=(int)random(6);
y=(int)random(6);
if ((Table1[i] != x && Table2[i] != y) || (Table1[i] != y && Table2[i] != x))
{
Table1[i] = x;
Table2[i] = y;
}
有什么想法可以控制它吗?
最佳答案
我只能想到两种实现它的方法,但没有一种是理想的。
- 检查您生成的数字是否已存在,如果存在,则生成另一个数字,直到获得唯一的组合。由于可能性很小,它可能会很昂贵,因为它是随机的,如果你非常不幸,你甚至可能会陷入无限循环......
- 创建一个包含所有可能组合的数组。然后,您将生成此数组的随机索引([0;array.length[)中的整数,而不是生成随机数。之后,您必须从数组中删除所选组合(这样它将不可用于下一个循环),以及它的逆组合(如果您选择了 (9;3),则必须删除 ( 9;3) 和 (3;9))。
关于javascript - 用随机值填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29256689/