c - 数组 C 中的随机数

标签 c random

我正在尝试生成数组大小范围内的随机数,并从数组中打印随机元素,然后返回索引 这样的元素。这是我到目前为止所拥有的。该代码不起作用。有人可以帮我吗?

#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/

相关文章:

c - C语言中如何获取数组的长度?

javascript - 如何使用 JavaScript 获取 -20 到 20 之间的 3 位小数的随机数?

python - 根据第三个列表中的随机项目,从两个列表之一中选择一个随机项目

java - 使用 ejb ql 从数据库中选择随机行

c# - 在 C# 中生成随机大写字母,同时检查每个字母只生成一对

c - 如何创建由简单字符数组支持的文件描述符?

c - 当我从 native C 代码调用 Rust dylib 时,底层会发生什么?

c - typedef 中的动态二维数组

c - 练习 9.7 Kochan。奇怪的输出

c# - 使用 RNGCryptoServiceProvider 生成随机字符串