gpt4 book ai didi

dart - 如何从Dart中的列表中获取多个随机元素

转载 作者:行者123 更新时间:2023-12-03 04:11:03 25 4
gpt4 key购买 nike

当我有 list 时

[1, 2, 3, 4, 5, 6, 7]

我想从列表中获得3个随机元素

例如
[1, 3, 4] or [4, 5, 1] or [3, 2, 5]

我怎样才能解决这个问题

有 Dart 库吗?

最佳答案

先前的解决方案很好,但是可以用更通用的方式编写,因此我们不会丢失List的类型信息。另外,take不返回List,而是Iterable

我已使用级联运算符将代码重写为更通用,更短的代码。我不确定您是否要输出ListIterable,所以我提出了多种解决方案:

void main() {
final items = [1, 2, 3, 4, 5, 6, 7];

print(pickRandomItems(items, 3)); // (7, 4, 3)
print(pickRandomItemsAsList(items, 3)); // [2, 4, 5]
print(pickRandomItemsAsListWithSubList(items, 3)); // [1, 3, 6]
print(items); // [1, 2, 3, 4, 5, 6, 7] (just to show that the original List is untouched)
}

Iterable<T> pickRandomItems<T>(List<T> items, int count) =>
(items.toList()..shuffle()).take(count);

List<T> pickRandomItemsAsList<T>(List<T> items, int count) =>
(items.toList()..shuffle()).take(count).toList();

List<T> pickRandomItemsAsListWithSubList<T>(List<T> items, int count) =>
(items.toList()..shuffle()).sublist(0, count);

不用在 take中使用 pickRandomItemsAsList,而可以使用 sublist。但是 subList的不足之处在于,如果 length大于 List,则会产生错误,但使用 take,您只需要洗净 List中的所有元素即可。

关于dart - 如何从Dart中的列表中获取多个随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61937046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com