gpt4 book ai didi

c - 初始化数组时随机数生成器出错

转载 作者:行者123 更新时间:2023-11-30 17:10:13 25 4
gpt4 key购买 nike

我一直在研究这段代码,它生成一个随机数数组到 numArray 中,然后对其进行洗牌,将其添加到数组中并打印出数组。这是我完成的代码。

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

#define SEED 7451
#define ARRAY_SIZE 25
#define LOOPS 10

void InitializeArray(int *numArray, const int arrayLength);
void ShuffleArray(int *numArray, const int arrayLength);
void printArray(int *numArray, const int arrayLength);

int main()
{
//informational message
printf("This Program creates permutations of an array of numbers/n");

//declare numArray with ARRAY_SIZE values as int
int numArray[ARRAY_SIZE];

//seed the random number generator
srandom(SEED);


int count;
int arrayLength= sizeof(numArray); //sizeof(numArray)/sizeof(numArray[0]);


//LOOPED 10 times, use the LOOPS variable
for (count = 0; count < LOOPS; count++){
//call InitializeArray
InitializeArray(numArray,arrayLength);

//call printArray Function to print out normal Array
printf("Initial Array: \n");
printArray(numArray,arrayLength);

//call ShuffleArray to create permutation
ShuffleArray(numArray,arrayLength);

//call printArray Function to print out the shuffled list.
printf("Shuffled Array: \n");
printArray(numArray,arrayLength);
}
return 0;
}

void InitializeArray(int *numArray, const int arrayLength)
{
//adds the values in ARRAY_SIZE to the numArray
int i;
for (i=0; i< ARRAY_SIZE;i++)
numArray=random()%(ARRAY_SIZE+1);
}

void ShuffleArray(int *numArray, const int arrayLength)
{
int i,j,temp;

for(j = 1; j < arrayLength; j++){
temp=numArray[j];
i=j-1;

while((i >= 0) && (numArray[i] > temp)){
numArray[i+1]=numArray[i];
i--;
}
numArray[i+1]=temp;
}
}

void printArray(int *numArray, const int arrayLength)
{
int i; // initialize counter
for(i = 0; i < arrayLength; i++)
{
printf("%d \n",numArray[i]);
}
}

出于某种原因,我的随机数生成器不断给出错误。

numArray=random()%(ARRAY_SIZE+1);

给我一​​个错误。它说存在我不明白的类型转换错误。有人可以帮我修复随机数生成器吗?

最佳答案

首先,函数 random() 不存在,我猜你指的是 rand()。 srandom() 也是如此,它应该是 srand()。

numArray=random()%(ARRAY_SIZE+1); 必须为 numArray[i]=rand();。如果要分配特定范围内的整数,可以使用 %(即范围 0-10:rand()%11)。

您的 arrayLength 变量尚不正确,因为 sizeof(numArray) 返回数组的大小(以字节为单位)。要获得元素的数量,您必须除以类型的大小:int arrayLength= sizeof(numArray)/sizeof(int);

关于c - 初始化数组时随机数生成器出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com