22/04/24 10:03:30.75 qAz5Hesd.net
こんな感じでいける?
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);