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