创建一个随机数数组,并用C语言返回该数组

创建一个随机数数组,并用C语言返回该数组,c,C,我想创建一个名为get_lotto_draw的函数,它将创建一个由6个随机数组成的数组,并将它们返回到main #include <stdio.h> #include <stdlib.h> #include <time.h> get_lotto_draw() { int lottery[50]; int u,i,j,temp; int lotto[6];

我想创建一个名为get_lotto_draw的函数,它将创建一个由6个随机数组成的数组,并将它们返回到main

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    get_lotto_draw()
    {
        int lottery[50];
        int u,i,j,temp;
        int lotto[6];

        srand(time(NULL));
            for (i =0; i<49; i++)
                lottery[i] = i+1;


            for (i =0; i<49; i++)
            {
                j = (rand()%49)+1;

                temp = lottery[i];
                lottery[i] = lottery[j];
                lottery[j] = temp;
            }

                for (i =0; i<6; i++)    
                {
                    lotto[i] = lottery[i];
                }

            return lotto;           
    }
#包括
#包括
#包括
乐透抽奖
{
国际彩票[50];
int u,i,j,温度;
国际乐透[6];
srand(时间(空));
对于(i=0;i
#包括
#包括
#包括
无效乐透抽签(int lotto[])
{
国际彩票[50];
int u,i,j,温度;

对于(i=0;i非常感谢所有帮助过我的人。我花了几个小时阅读并学习了您提到的内容。我现在已经成功地创建了一段代码,可以实现我想要的功能

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


int *get_lotto_draw(int n)
    {
        int i;
        int *lotto;

        lotto = malloc(n * sizeof(*lotto));
        if (lotto == NULL) 
            return NULL;


        int lottery[50];
        int u,j,temp;

        for (i =0; i<49; i++)
            lottery[i] = i+1;


        for (i =0; i<49; i++)
        {
            j = (rand()%49)+1;

            temp = lottery[i];
            lottery[i] = lottery[j];
            lottery[j] = temp;
        }

            for (i =0; i<6; i++)    
            {
                lotto[i] = lottery[i];
            }

        return lotto;           
    }


int main(int argc, char *argv[]) 
{
    int i, n = 6;
    int *lotto;

    srand(time(NULL));

    lotto = get_lotto_draw(n);
    if (lotto == NULL) 
        return -1;

    printf("Here is the array: ");
    for(i = 0 ; i < n ; i++) { 
        printf("%d ", lotto[i]); 
    }
    free(lotto); 
    printf("\n\n");

    return 0;
}
#包括
#包括
#包括
int*get\U lotto\U抽签(int n)
{
int i;
国际*乐透;
乐透=malloc(n*sizeof(*lotto));
如果(乐透==NULL)
返回NULL;
国际彩票[50];
国际单位,j,温度;

对于(i=0;i我还发现我可以通过使用静态int来实现这一点,因为我有一个设置长度的数组

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


int *get_lotto_draw(int n)
    {
        int i;
        static int lotto[6];

        int lottery[50];
        int u,j,temp;

        for (i =0; i<49; i++)
            lottery[i] = i+1;


        for (i =0; i<49; i++)
        {
            j = (rand()%49)+1;

            temp = lottery[i];
            lottery[i] = lottery[j];
            lottery[j] = temp;
        }

            for (i =0; i<6; i++)    
            {
                lotto[i] = lottery[i];
            }

        return lotto;           
    }



int main(int argc, char *argv[]) 
{
    int i, n = 6;
    int *lotto;

    srand(time(NULL));

    lotto = get_lotto_draw(n);


    printf("Here is the array: ");
    for(i = 0 ; i < n ; i++) { 
        printf("%d ", lotto[i]); 
    }

    printf("\n\n");

    return 0;
}
#包括
#包括
#包括
int*get\U lotto\U抽签(int n)
{
int i;
静态整数乐透[6];
国际彩票[50];
国际单位,j,温度;

对于(i=0;i您忘了问一个明确的问题!您显示的函数有几个问题:首先,最重要的是,您没有声明返回类型,因此编译器将使其
int
。此外,如果您将其更改为返回指针,那么您将返回指向局部变量的指针,该局部变量在函数运行后将超出范围返回并留下一个错误指针。不要在函数中调用
srand
,它会在每次调用函数时重置种子,因此,如果在同一秒内调用它两次(或更多),两次调用将生成相同的“随机”数字。修正你的格式!这不仅仅是空白,它是错误的原因!顺便说一句,请查看fisher yates,以获得更好的算法来洗牌调用
malloc
,这是一个很好的实践,让调用
malloc
的函数也可以执行
免费的
。顺便说一句,如果我之前的回答给了你指导和建议的话回答你的问题-请接受。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int *get_lotto_draw(int n)
    {
        int i;
        static int lotto[6];

        int lottery[50];
        int u,j,temp;

        for (i =0; i<49; i++)
            lottery[i] = i+1;


        for (i =0; i<49; i++)
        {
            j = (rand()%49)+1;

            temp = lottery[i];
            lottery[i] = lottery[j];
            lottery[j] = temp;
        }

            for (i =0; i<6; i++)    
            {
                lotto[i] = lottery[i];
            }

        return lotto;           
    }



int main(int argc, char *argv[]) 
{
    int i, n = 6;
    int *lotto;

    srand(time(NULL));

    lotto = get_lotto_draw(n);


    printf("Here is the array: ");
    for(i = 0 ; i < n ; i++) { 
        printf("%d ", lotto[i]); 
    }

    printf("\n\n");

    return 0;
}