【问题标题】:Counting average from random numbers from 0 to 1从 0 到 1 的随机数计算平均值
【发布时间】:2017-11-23 01:54:30
【问题描述】:

我终于得到了让我从 0 到 1 的随机浮点数的代码。 我的代码如下所示:

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

int main()
{
srand((int)time(NULL));

int N=10;

float a = 1.0;
for (int i=0;i<N;i++)
    printf("%f\n", ((float)rand()/(float)(RAND_MAX)) * a);

return 0;
}

现在,我需要编写一个程序,该程序将给出给定数字 10

【问题讨论】:

  • 打印前先保存好,总结一下。
  • 我闻到了 C 的味道,而不是 C++。
  • 出于好奇,为什么要乘以a (1.0)?
  • @ringø 100% 确定这是冗余代码。

标签: c random average


【解决方案1】:

使用“a”变量作为浮点数的临时存储和求和。

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

int main()
{
srand((int)time(NULL));

int lowerLimit = 10 + 1, upperLimit = 10000;
//generates random number between 10 and 10000, if needed
int N =  lowerLimit + rand() % (upperLimit - lowerLimit);

/* 'a' variable was not needed in previous*/
float a, sum = 0.0;
for (int i=0;i<N;i++){
    a = ((float)rand()/(float)(RAND_MAX));
    sum += a;
    printf("Float %i = %f\n", i,a);
}
printf("Average = %f\n", sum/N);

return 0;
}

【讨论】:

    【解决方案2】:

    在打印之前,存储它们并总结它们。

    int main()
    {
    srand((int)time(NULL));
    
    int N=10;
    
    float a = 1.0f, r, sum = 0.0f;
    for (int i=0;i<N;i++){
        r = ((float)rand()/(float)(RAND_MAX)) * a;
        printf("%f\n", r);
        sum += f;
    }
    printf("sum = %f\n", sum / N);
    
    return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 1970-01-01
      • 2019-05-08
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多