rand() 不给我随机数
rand() doesn't give me random numbers
我想打印保存在数组中的 1000 个随机数。数字必须在 1 到 10000 之间。
我将 srand(time(NULL))
放入我的 main
函数中,并且数组必须在我的 init
函数中填充随机数。 ausgabe
函数用于格式化输出。
但是 rand
将我的数组填满了所有行中的数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARR_SIZE 1000
void init(int * ptr, int size){
for (int i = 0; i < size; i++){
*(ptr + i) = (rand() %10000+1);
}
}
void ausgabe(int * ptr, int size){
for (int i = 0; i < size; i++){
printf("%5i\t", * ptr + i);
if ((i + 1) %10 == 0){
printf("\n");
}
}
printf("\n\n");
}
int main(){
int zufall[ARR_SIZE];
srand(time(NULL));
init(zufall, ARR_SIZE);
printf("\n\t\t\t---unsortierte Ausgabe---\n\n");
ausgabe(zufall, ARR_SIZE);
return 0;
}
* ptr + i
是 (*ptr)+i
,而不是 *(ptr+i)
。您需要更加小心运算符优先级。 (并学习使用调试器:调试器中的 30 秒会清楚地表明问题出在打印,而不是初始化。)
我想打印保存在数组中的 1000 个随机数。数字必须在 1 到 10000 之间。
我将 srand(time(NULL))
放入我的 main
函数中,并且数组必须在我的 init
函数中填充随机数。 ausgabe
函数用于格式化输出。
但是 rand
将我的数组填满了所有行中的数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARR_SIZE 1000
void init(int * ptr, int size){
for (int i = 0; i < size; i++){
*(ptr + i) = (rand() %10000+1);
}
}
void ausgabe(int * ptr, int size){
for (int i = 0; i < size; i++){
printf("%5i\t", * ptr + i);
if ((i + 1) %10 == 0){
printf("\n");
}
}
printf("\n\n");
}
int main(){
int zufall[ARR_SIZE];
srand(time(NULL));
init(zufall, ARR_SIZE);
printf("\n\t\t\t---unsortierte Ausgabe---\n\n");
ausgabe(zufall, ARR_SIZE);
return 0;
}
* ptr + i
是 (*ptr)+i
,而不是 *(ptr+i)
。您需要更加小心运算符优先级。 (并学习使用调试器:调试器中的 30 秒会清楚地表明问题出在打印,而不是初始化。)