cout << results[rand()%(sizeof(results)/sizeof(results[0]))] << endl;
结果是一个整数数组:1,2,3,4,5。
有人可以解释一下吗?
答案 0 :(得分:1)
这将以随机顺序打印arrayentry的值。
它创建一个随机值,并使用模运算符%
将其限制为arraysize的索引。
rand()
创建0 to RAND_MAX
sizeof(results)/sizeof(results[0])
是您在代码中先前定义的数组的大小,即int results[5]
模运算符%
组合了这两个tww值,并确保结果不大于数组的大小(0-4)。
答案 1 :(得分:0)
rand()
会返回一个随机数。
你想要一个大小为5的数组中的随机数。所以你使用modulo运算符来确保你不超过4(0,1,2,3或4)。 / p>
sizeof(results)
返回数组的总大小(以字节为单位)。 sizeof(results[0])
是该数组中元素的大小。例如,如果sizeof(results[0])
为8,则sizeof(results)
为40,因此结果为40/8,即5,即数组的大小。
答案 2 :(得分:0)
看起来我的previous answer有点简洁......
cout << results[rand()%(sizeof(results)/sizeof(results[0]))] << endl;
可以细分为
int num_elems = sizeof(results)/sizeof(results[0]);
int randomIndex = rand() % num_elems;
int randomValue = results[randomIndex];
cout << randomValue << endl;
稍微详细一点:
sizeof(results)/sizeof(results[0])
计算数组results
中的元素数。 (请注意,这仅在您有权访问数组定义时才有效 - 您不能将其与指向数组的指针一起使用。)rand() % num_elems
计算[0..num_elems-1]范围内的随机数;这是results
数组的范围。results[randomIndex]
会返回results