【发布时间】:2021-06-09 19:26:31
【问题描述】:
如果我有 2 个列表 ['a'; 'b'] 和 [1;2;3;4] 我想得到类似 [('a',2);('a',4);('b',3); ('b', 1)]。所以重点是我需要使用第二个列表的所有元素一次,我可以使用第一个列表中的元素 0 次或更多次......我尝试使用 List.combine 但总是将第一个列表的第 n 个元素与第一个列表的第 n 个元素连接起来第二个和列表也需要具有相同的长度...
【问题讨论】:
-
你的标题说你想从第一个列表中随机选择。很明显,
List.combine不会立即有用,因为它的行为没有任何随机性。您可以编写一个函数draw n l,它从列表 l 中返回一个包含 n 个随机抽取(带替换)的列表。然后您可以使用List.combine将随机抽奖与第二个列表结合起来。然而,从长列表中随机抽取是低效的。最好先将第一个列表转换为数组。 -
是的,我认为更简单的方法是将列表转换为数组并使用
Random.int选择随机元素