diff --git a/bucket.c b/bucket.c index 9a4be8a6a14a31362e7ac4eb85c2379d3b6bd203..8573e9e70fdaf0fe875badae069942e75711666a 100644 --- a/bucket.c +++ b/bucket.c @@ -22,25 +22,34 @@ bool mine(tid, element, thr, max){ int start = tid*range; int end = start + range - 1; - return (element > start && element < end); + if(tid == thr-1){ + return ((element >= start && element <= end) || element == max); + }else{ + return (element >= start && element <= end); + } + + } -unsigned int rand_interval(unsigned int min, unsigned int max) +int rand_interval(int max) { - int r; - const unsigned int range = 1 + max - min; - const unsigned int buckets = RAND_MAX / range; - const unsigned int limit = buckets * range; - - /* Create equal size buckets all in a row, then fire randomly towards - * the buckets until you land in one of them. All buckets are equally - * likely. If you land off the end of the line of buckets, try again. */ - do - { - r = rand(); - } while (r >= limit); + return rand() % max +1; +} - return min + (r / buckets); +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; + } + srand(time(NULL)); + result = (rand()%(hi_num-low_num))+low_num; + return result; } int main(int argc, char* argv[]){ @@ -58,8 +67,10 @@ int main(int argc, char* argv[]){ int elements[n], min=0, max=n, orderedElements[n]; for(int i=0; i < n; i++){ - elements[i] = rand_interval(min, n); + elements[i] = rand_interval(n); + printf("%d - ", elements[i]); } + printf("\n"); //bagi ke beberapa embercd //foreach element in elements @@ -99,11 +110,11 @@ int main(int argc, char* argv[]){ #pragma omp barrier st = 0; - en = counter[0]-1; + en = counter[0]; for(int i=0; i<tid; i++){ st += counter[i]; if((i+1) >= tid){ - en = st + counter[i+1]-1; + en = st + counter[i+1]; } } int ll = 0; diff --git a/omp_bucket b/omp_bucket index 250a301915f41fad22ff9ff9bb5a2dcefdfc2a8d..c455819f5f647f98110681287c88bf8637a50c36 100755 Binary files a/omp_bucket and b/omp_bucket differ