[英]count numbers in certain intervals
我想創建一個代碼,其中包含兩組函數。 首先,我創建了 100 個隨機數,然后我想根據區間 [0,1) 和子區間 j 將這 100 個數字分開。 IE。 如果子區間 j 為 10,則將在 0 和 1 之間創建 10 個相等范圍的子區間。0 ~ 0.1, 0.1 ~ 0.2, 0.2 ~ 0.3,...., 0.9 ~ 1.0。 我已經用下面的代碼完成了這些過程。
問題是我不知道如何計算這些 k 子間隔中的數字。 例如,我不知道如何編碼,以便顯示 0 ~ 0.1、0.1 ~ 0.2、0.2 ~ 0.3、....、0.9 ~ 1.0 之間有多少個數字。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define E 2.71828182845904523536
double ran_y(double lambda){ // Equation 2
double u;
u = rand() / (RAND_MAX +1.0);
if(u<0)
return 0;
else if(u>=0)
return 1 - pow(E, -lambda * u);
}
double ran_expo(double lambda){ // Equation 3
double u;
u = rand() / (RAND_MAX + 1.0);
return -log(1- u) / lambda;
}
int main(void)
{
int i;
double interval, ksub, kint;
double npt;
srand((unsigned)time(NULL));
printf("Exponential random variable\n"); // prints out 100 exponential
// random variables
for (i=0; i<100; i++) //
printf("%f" " ", ran_expo(1)); //
printf("\n \nNumber of intervals: "); // value of k-sub intervals
scanf("%lf", &ksub); //
for(i=0; i<=ksub; i++) {
interval = 1/ksub;
kint = i * interval;
printf("%.3lf ", kint); // divides into k-sub intervals
}
for(i=0; i<100; i++)
printf("%f" " ", ran_y(1));
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define E 2.71828182845904523536
double ran_y(double lambda){ // Equation 2
double u;
u = rand() / (RAND_MAX +1.0);
if(u<0)
return 0;
else if(u>=0)
return 1 - pow(E, -lambda * u);
}
double ran_expo(double lambda){ // Equation 3
double u;
u = rand() / (RAND_MAX + 1.0);
return -log(1- u) / lambda;
}
int main(void)
{
int count = 0;
int i;
double interval, ksub, kint;
double npt;
srand((unsigned)time(NULL));
printf("Exponential random variable\n"); // prints out 100 exponential
// random variables
for (i=0; i<100; i++) //
printf("%f" " ", ran_expo(1)); //
printf("\n \nNumber of intervals: "); // value of k-sub intervals
scanf("%lf", &ksub); //
for(i=0; i<=ksub; i++) {
interval = 1/ksub;
kint = i * interval;
printf("%.3lf ", kint); // divides into k-sub intervals
count++;
}
for(i=0; i<100; i++)
printf("%f" " ", ran_y(1));
printf("%d Intervals in each k-sub", count);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.