var numbers = new int[] { 0, 300, 150, 100, 80 }; var sums = new int[numbers.Length]; for (int i = 0, sum = 0; i < numbers.Length; i++) sums[i] = (sum += numbers[i]); int v = new Random().Next(sums[sums.Length - 1]) + 1; int ok = sums.Length - 1, ng = -1; while (ok - ng > 1) { int mid = (ok + ng) / 2; if (sums[mid] >= v) ok = mid; else ng = mid; } Console.WriteLine(ok + 1);