【问题标题】:Sorting random numbers into bins - C [closed]将随机数排序到垃圾箱中-C [关闭]
【发布时间】:2014-08-29 18:52:38
【问题描述】:

我正在尝试编写一些代码,对生成的随机数进行排序,介于 0 和 1 之间,并将其排序到一个“bin”中,这是一个数组。然后窗口会打印出每个 bin 中随机数的数量。希望这有点道理,但我真的很挣扎。我是一个完整的初学者,我完全被卡住了,需要一些关于如何使代码工作以及下一步去哪里的帮助。这是我到目前为止所得到的。

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

int main()
        {
        double x,y;
        int i;
        int data[i];
        unsigned int time_ui;
        time_ui = (unsigned int)( time(NULL) );
        srand(time_ui);
        x = rand()/ (double)RAND_MAX;
            data[i]=0;
        for (i=0; i<10; i++)
        {
            (x*10)=y;
            if ((int)y == i)
            {
            data[i]+=1;
            }
        printf("Bin %d contains %d random numbers\n", i, data[i]);
        }

    return 0;
    }

【问题讨论】:

  • 那么你的问题是什么?
  • 哪个部分不工作?你有错误吗?如果有,请提供。
  • (x*10)=y; 应该做什么?那甚至不应该编译。
  • int i; int data[i]; 也很糟糕;也许您需要回归基础?
  • 不幸的是,您正在寻找的帮助过于广泛,无法提供简单的答案,因此超出了 Stack Overflow 的范围。您要求我们完全重写您的程序。请将您的问题缩小到具体问题并重新提问。

标签: c sorting if-statement for-loop random


【解决方案1】:

我想我明白你想做什么了,这就是我能想到的

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



int main()
{
    double x,y;
    int i;
    int data[10];  // you will generate 10 bins
    unsigned int time_ui;
    time_ui = (unsigned int)( time(NULL) );
    srand(time_ui);


    for (i =0; i<10; i++) // initialize each bin
    {
        data[i] = 0;
    }

    for (i=0; i<100; i++)  // generate and examine 100 random you can do it for more
    {
        x = rand()/(double)RAND_MAX; // generate random number
        y = 10 *x;                   // predict in which bin it will be
        data[(int)y]++;              // increase that bin by 1
    }



    for (i =0; i<10; i++) // once done, let's print it out
    {
        printf("Bin %d contains %d random numbers\n", i, data[i]);
    }

    return 0;

}

编辑

不是很重要,只是为了好玩,您可以打印出这样的结果:

for (i =0; i<10; i++) // once done, let's print it out
    {
        printf("\t");
        for(j = 0; j<data[i]; j++)
        {
            printf("_ ");
        }
        printf("\nBin %d\t", i);
        for(j = 0; j<data[i]; j++)
        {
            printf("_|");
        }
        printf("%d\n", data[i]);

    }

别忘了定义int j;

【讨论】:

  • 太棒了,这正是我所需要的,非常感谢您的帮助。
  • @alexheslop1 : 没关系,我们是来互相帮助的
猜你喜欢
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多