C 生成100个随机数
在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
/*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;ifread[随机数据]
?您确实需要了解更多有关的信息。您还应该发布编译器错误和警告。为什么要使用依赖平台的随机设备而不是?我想现在我要做的就是对它们进行排序。是否可以对/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;
}