创建一个随机数数组,并用C语言返回该数组
我想创建一个名为get_lotto_draw的函数,它将创建一个由6个随机数组成的数组,并将它们返回到main创建一个随机数数组,并用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];
#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;
}