C 生成100个随机数

C 生成100个随机数,c,C,在C语言中,我需要生成100个随机数,然后按降序排序。到目前为止,我有这个,这是一个绝对的混乱。我可以说我完全错了,但我没有足够的经验来用理智的方式写这篇文章。有人能帮忙吗 /*100 random numbers in range 1-10*/ /*sorted in descending order*/ #include <stdio.h> void random(char *nums, int count); int main(void) { int random_n

在C语言中,我需要生成100个随机数,然后按降序排序。到目前为止,我有这个,这是一个绝对的混乱。我可以说我完全错了,但我没有足够的经验来用理智的方式写这篇文章。有人能帮忙吗

/*100 random numbers in range 1-10*/
/*sorted in descending order*/
#include <stdio.h>
void random(char *nums, int count);

int main(void) {
    int random_num, count;
    char nums[100];
    for(count = 0; count < 100; count++) {
        random(&nums, count);
    }

    for(count = 0; count < 100; count++) {
        printf("%d\t", nums[count]);
    }

    return 0;
}

void random(char *nums, int count) {
    int random_data = fopen("/dev/random", "r");
    nums[count] = fread[random_data];
}
/*100个范围为1-10的随机数*/
/*按降序排序*/
#包括
void random(字符*nums,整数计数);
内部主(空){
int随机数,计数;
charnums[100];
用于(计数=0;计数<100;计数++){
随机(&nums,计数);
}
用于(计数=0;计数<100;计数++){
printf(“%d\t”,nums[count]);
}
返回0;
}
void random(字符*nums,整数计数){
int random_data=fopen(“/dev/random”,“r”);
nums[count]=fread[random_data];
}
请在
stdlib.h
上调用
rand()

#include <stdlib.h>

int main(void) {
    int random_num, count;

    srand(time(NULL));
    char nums[100];
    for(count = 0; count < 100; count++) {
        nums[count] = rand();
    }

    for(count = 0; count < 100; count++) {
        printf("%d\t", nums[count]);
    }

    return 0;
}
#包括
内部主(空){
int随机数,计数;
srand(时间(空));
charnums[100];
用于(计数=0;计数<100;计数++){
nums[count]=rand();
}
用于(计数=0;计数<100;计数++){
printf(“%d\t”,nums[count]);
}
返回0;
}

1随机数:首先是srand(时间(0)),然后使用rand()生成所需的数字

2排序:使用qsort(数组,n,sizeof(int),comp)


它们都需要

试试这段代码,我还包括了按降序排列值的代码

/*100 random numbers in range 1-10*/
/*Sorted in descending order*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void sorting(char *numbers) /* Sorting in descending order */
{
    int i,j,temp;
    for(i=1;i<100;i++)
    {
        for(j=0;j<100-i;j++)
        {
            if(numbers[j] < numbers[j+1])
            {
                temp = numbers[j+1];       
                numbers[j+1] = numbers[j];
                numbers[j] = temp;
            }
        }
    }
}

int main(void) {
    int random_num, count;

    srand(time(NULL));
    char nums[100];
    for(count = 0; count < 100; count++) {
        /* Mod by 11 as we need range 1-10 */
        nums[count] = rand() % 11;
    }
    /* Sorting in descending order */
    sorting(nums);

    printf("Printing values after sorting.\n");
    for(count = 0; count < 100; count++) {
        printf("%d\n", nums[count]);
    }
    return 0;
}
/*100个范围为1-10的随机数*/
/*按降序排序*/
#包括
#包括
#包括
无效排序(字符*数字)/*按降序排序*/
{
int i,j,温度;

对于(i=1;i
fread[随机数据]
?您确实需要了解更多有关的信息。您还应该发布编译器错误和警告。为什么要使用依赖平台的随机设备而不是?我想现在我要做的就是对它们进行排序。是否可以对
/dev/random
进行种子设定?您的意思是将使用
/dev/random
作为
srand()的种子数
?。如果您将其转换为
int
类型,这是可能的。是的。无论如何,
/dev/random
似乎绝对是一个更好的选择。多亏了您,我把随机数记下来了,现在可以对它们进行排序了。@user3897320
/dev/random
可能更好。但是微秒呢。它可以通过
gettimeofday()获得
。享受你的分类;)是的,排序有点混乱,但我不想寻求帮助。它看起来很容易,但不知怎么的,它就是不容易。我以前做过,但不记得怎么做。我只是做了一个for循环,我认为它是快速排序。你使用多个指针真的让我很反感。我迫切需要理解指针,学习一些该死的算法!qsort函数实现了一种快速排序算法,用于对num元素数组进行排序,每个元素的宽度为字节。参数base是指向要排序的数组基底的指针。qsort用排序的元素覆盖此数组。参数compare是指向用户提供的例程的指针,该例程比较两个数组元素并返回一个值g它们之间的关系。qsort在排序期间调用比较例程一次或多次,每次调用时将指针传递给两个数组元素:cmp((void*)和elem1,(void*)和elem2;您需要导入int指针。PS:pointer很重要
/*100 random numbers in range 1-10*/
/*Sorted in descending order*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void sorting(char *numbers) /* Sorting in descending order */
{
    int i,j,temp;
    for(i=1;i<100;i++)
    {
        for(j=0;j<100-i;j++)
        {
            if(numbers[j] < numbers[j+1])
            {
                temp = numbers[j+1];       
                numbers[j+1] = numbers[j];
                numbers[j] = temp;
            }
        }
    }
}

int main(void) {
    int random_num, count;

    srand(time(NULL));
    char nums[100];
    for(count = 0; count < 100; count++) {
        /* Mod by 11 as we need range 1-10 */
        nums[count] = rand() % 11;
    }
    /* Sorting in descending order */
    sorting(nums);

    printf("Printing values after sorting.\n");
    for(count = 0; count < 100; count++) {
        printf("%d\n", nums[count]);
    }
    return 0;
}