У меня есть программа, которая запускает более 1000000 итераций для имитации загрузки сервера. Скорость поступления запросов - это переменная. Например, если скорость прибытия равна 2: это означает, что каждые 2 итерации должен быть 1 запрос, который будет генерировать «около» 500 000 запросов в конце моделирования и так далее. Я не могу этого сделать, просто добавив новый запрос на каждый n-й интервал в зависимости от скорости прибытия. Должен быть фактор удачи.Равномерно распределенная вероятность в C
#include<stdio.h>
#include<time.h>
#include <stdlib.h>
//random number generator method
int random_number(int min_num, int max_num){
int result=0,low_num=0,hi_num=0;
if(min_num<max_num){
low_num=min_num;
hi_num=max_num+1; // this is done to include max_num in output.
}else{
low_num=max_num+1;// this is done to include max_num in output.
hi_num=min_num;
}
result = (rand()%(hi_num-low_num))+low_num;
return result;
}
int main(){
srand(time(NULL));
unsigned int arrivalRate = 2;
unsigned int noOfRequests = 0;
unsigned int timer;
for(timer = 0; timer < 1000000; timer++){
//gives a random number between 0 and arrival rate
int x = random_number(0, arrivalRate);
//there is a new request
if(x <= 1){
noOfRequests++;
}
}
printf("No of requests: %d", noOfRequests);
}
Так что, если я запускаю этот код arrivalRate 2, он генерирует около 600.000 запросов, которые должны быть только около 500 000 (+ -1000 терпима) запросов. Как я могу улучшить свой код для получения более разумных результатов, он создает слишком много, чем ожидалось.