我有两个1D数组,我想在Processing中用10个独特的随机x,y值填充它们。
例如:
x y
- -
3, 9
2, 4
6, 2
7, 5
我的阵列是:
表1 表示X值和
Y值的表2 。
我的问题是,如果数字3,9已存在,我不希望9,3存储在数组中。
我可以识别x,y值(或y,x)何时已经存在,但是一旦我替换它,我就无法检查先前索引中是否存在 new 生成的随机数。
这是我到目前为止所尝试的。但是,如果存在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 :(得分:2)
我只能想到实现它的两种方法,没有一种是理想的。
答案 1 :(得分:1)
我有这个可能对你有用的代码,
首先声明你的数组:
var a = [];
var b = [];
然后你可以调用一个为你做任何事情的函数
fill(a,b)
这个函数的定义应该是这样的:
function fill(a, b) {
var arr = [];
while(arr.length<10) {
var pair = randomPair();
if (arr.indexOf(pair.join(','))==-1 || arr.indexOf(pair.reverse().join(','))==-1) {
a.push(pair[0]);
b.push(pair[1]);
arr.push(pair.join(','));
}
}
}
然后其他使用函数的定义是:
function randomPair () {
return [ parseInt(Math.random()*7) , parseInt(Math.random()*7) ]
}
所以,显然,randomPair函数返回2个值x和y。 fill
函数测试该对是否已经按正常顺序或颠倒顺序存在。如果没有,它会添加a和b,它们是对主阵列的引用;
答案 2 :(得分:-1)
我认为没有其他选择可以再次走到整个数组,检查它们是否包含新生成的值。