我正在尝试生成数组大小范围内的随机数,并从数组中打印随机元素,然后返回索引 这样的元素。这是我到目前为止所拥有的。该代码不起作用。有人可以帮我吗?
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
srand ( time(NULL) );
int myArray[11] = { 4,8,2,5,9,1,7,10,43,23,3 };
int randomIndex = rand();
int randomValue = myArray[randomIndex];
printf("Reference: %d\n", randomValue);
最佳答案
首先,您的代码似乎位于函数之外,因此可以将其包装起来,例如函数 main
。
其次,函数 rand
返回一个介于 0和 RAND_MAX
之间的伪随机整数值,该值通常远大于数组大小 11
。
因此,您很有可能超出数组边界。
将randomIndex
限制为11
,例如通过使用模:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main() {
srand ( time(NULL) );
int myArray[11] = { 4,8,2,5,9,1,7,10,43,23,3 };
int randomIndex = rand() % 11;
int randomValue = myArray[randomIndex];
printf("Reference: %d\n", randomValue);
return 0;
}
请注意,取模(即 %11
)是一种非常简单的限制数字的方法,并且它会产生随机值的非均匀分布。如果出现问题,请随时再次询问。
关于c - 数组 C 中的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675878/