单个数字作为xy坐标



我使用一个非常特定的随机数生成器来生成0到2^20之间的数字。我正在尝试使用这个数字访问二维数组的元素。

因为myArray[x][y]可以表示为myArray[x*a + y](其中'a'是第二次元中的元素数量),我不应该把我的单个随机数变成二维坐标吗?这个数组恰好是2^10 × 2^10,所以我想应该是:

int random = randomize();      //assigned a random value up to 2^20
int x = floor(random / pow(2, 10));
int y = random % pow(2, 10);
myArray[x][y] = something();   //working with the array

数组元素没有像预期的那样被访问,有些根本没有被访问。我怀疑我的逻辑有错误,我检查了我的程序语法。

不,我不能使用两个随机数来访问数组。不行,我不能用一维数组

只是检查这将是正确的数学。谢谢你。

在c++中,^是二进制位XOR运算符,而不是幂运算符。

c++中获得2的幂的惯用表达式是1 << n,所以你可以这样重写表达式:

int x = floor(random / (1<<10));
int y = random % (1<<10);

左移n的原因就像2的n次方一样,在以10为基数的系统中,将n的0加到1,乘以n的10次方。

2^10在c++中不是1024。

因为在c++中^XOR(位运算符)

include <math.h>       /* pow */
int main ()
{
  int random = randomize();      //assigned a random value up to 2^20
  int x = floor(random / pow(2,10));
  int y = random % pow(2,10);
  myArray[x][y] = something();   //working with the array
  return 0;
}

相关内容

  • 没有找到相关文章

最新更新