我想从三个列表中随机选择一个项目,其中每个列表代表不同的选择概率。
我有三个列表(也可以是3个阵列):高,中,低"优先级"。
我想通过优先机会从这三个列表中选择一个项目
E.g。高于70%的可能性从20%的中间和低的休息10%
然而,一些列表可能是空的(不是全部)
至少其中一个列表中有一个项目
我正在寻找能够做到这一点的算法(任何语言,但更喜欢C#Java Python)
我尝试了以下代码(Python),但它没有完成这项工作 由于空状态,有时甚至没有选择任何项目。
x = random.randint(1,100)
if x < 71 and highChance != []:
return random.choice(highChance)
elif x >=71 and x < 91 and midChance != []:
return random.choice(midChance)
elif lowChance != []:
return random.choice(lowChance)
答案 0 :(得分:0)
int[] high = new int[] { 0, 1, 2, 3 };
int[] mid = new int[] { 0, 1 };
int[] low = new int[] { };
int[][] arr = new int[3][];
arr[0] = high.Length != 0? high: mid.Length != 0? mid: low;
arr[1] = mid.Length != 0 ? mid : arr[0];
arr[2] = low.Length != 0 ? low : arr[0];
Random rnd = new Random(0);
int n = rnd.Next(10);
int k = (n < 7) ? 0 : (n < 9) ? 1 : 2;
int result = arr[k][rnd.Next(arr[k].Length)];