繁体   English   中英

使用 Array 生成随机数

[英]Generate random numbers with Array

我正在学习 C 并且我一直在混合数组和矩阵。 而且我似乎无法理解我的代码在哪里做错了。 我已经制作了 2 个不同的版本,我得到的唯一反馈是,我将数组与矩阵混合。

我想知道是否有人可以帮助我准确了解我哪里出错了,因为我的教授和他对此的解释没有得到任何帮助。 (对不起,提前)

这是第一个代码,但它们都非常相似。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int array[100];
    int max = 0, min = 1;
    int fro;

    fro = (int)time(NULL);
    srand(fro);

    for (int i = 0; i < 100; i++) {
        array[i] = rand() % (400 + 1 - 100) + 100;
        if (array[i] <= min) {
            min = array[i];
        }
        if (array[i] >= max)
            max = array[i];
    }
     
    printf("Array\n");
    for (int row = 0; row < 10; row++) {
        for (int col = 0; col < 10; col++) {
            printf(" %i ", array[row * 10 + col]);
        }
        printf("\n");
    }
    return 0; 
}

这是另一个版本,但我得到了与第一个版本相似的反馈。 我正在混合数组和矩阵..

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int tal[10][10];
    int array[100];
    int max = 0, min = 1;
    int fro;

    fro = (int)time(NULL);
    srand(fro);

    // Version 3 of the array slump generation

    for (int row = 0; row < 10; row++) {
        //printf("Yttre loop row %i\n", row);
        
        for (int col = 0; col < 10; col++) { // row = 1, col = 0
            tal[row][col] = rand() % (400 + 1 - 100) + 100;
            // printf("tal[%i][%i] = %i\n", row, col, tal[row][col]);

            // Get max
            if (tal[row][col] >= max) {
                max = tal[row][col];
            }
            // Get min
            if (tal[row][col] <= min) {
                min = tal[row][col];
            }
            // printf("tal[%i][%i] = %i\n", row, col, tal[row][col]);
        }
    }
    
    // Printar ut hela matrisen i row-major order
    for (int row = 0; row < 10; row++) {
        for (int col = 0; col < 10; col++) {
            printf(" %i ", tal[row][col]);
        }
        printf("\n");
    }
    
    return 0;
}

我的意思是它们都有效,我想我正在使用数组:/我们甚至还没有通过矩阵...

矩阵的概念不是ISO C概念。 但是,您可以通过施加额外的线性代数约束来使用数组来表示矩阵。 C 有几个线性代数库 但是,请准备好一些人松散地使用术语矩阵来表示任何二维数组,因为它们在大多数演示文稿中看起来相似。

您的第一个示例是一个int array[100] ,它存储数组 100 的 int 然后通过 10 row和 10 col访问它; 因为 10 * 10 = 100 <= 100 你已经为它保留了,所以这是完全有效的。 人们可能更喜欢这种表示,因为它是显式连续的,但编译器无法进行边界检查。

您的第二个示例是int tal[10][10] ,它是int 的数组 10 的数组 10都在 memory 的同一块中 它是相同的 100 元素数组,但访问方式不同,就像您所做的那样。 这也是有效的,我想你老师问的更多。

您将其视为矩阵的将更像矩阵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM