【问题标题】:In flutter / Dart : how to randomly select a number of items in a list?在颤振/飞镖中:如何随机选择列表中的多个项目?
【发布时间】:2021-06-29 06:31:08
【问题描述】:

我有一个包含 n 个整数的列表。我想从这个列表中随机选择三个值并将它们影响到一个三项列表。 我该怎么做?

【问题讨论】:

  • 这能回答你的问题吗? How do get a random element from a List in Dart?
  • 在某种程度上...我读了这篇文章。但是我无法创建包含三个元素的第二个列表...在第一个列表中随机抽取三个元素...
  • Shuffle the list 并选择前三项。
  • 使用sample - 文档说:“从这个iterable中随机选择count个元素。返回的列表包含count个不同的iterable元素。如果iterable包含更少的count个元素,结果将包含所有这些,但会比 count 短。如果相同的值在可迭代中多次出现,它也可以在所选元素中出现多次。"
  • 这里你可以试试这个。 stackoverflow.com/questions/13554129/list-shuffle-in-dart希望你可以用这个随机播放。

标签: dart


【解决方案1】:

创建这个方法:

import 'package:collection/collection.dart';

List<int> getList(int n, List<int> source) => source.sample(n);

用法:

final outputList = getList(3, your_int_list);
print(outputList); // Prints non-repeating 3 random number

【讨论】:

  • 抱歉,这不是从给定列表source 中提取的三个元素的子集吗?
  • @MoneySetsYouFree 是的。这不是 OP 要求的吗?
  • 他想要一个非重复值的子集,例如您来自[1,2,3,4,5,6] 的解决方案可以产生[1,1,2]
  • 无需重新发明轮子:sample
  • @pskink 我更新了代码,如果有问题请告诉我。感谢sample 链接!
【解决方案2】:

用 List of String 试试这个例子:

import "dart:math";

List<String> list = ['tata','toto','titi','tutu','lala','lolo','lili'];

final random= new Random();

String item= list[random.nextInt(list.length)];
print(item);

【讨论】:

  • 这行得通。但我需要获取三个不同的项目并将它们放入另一个列表中。一直在尝试“shuffle”的方法。
【解决方案3】:

使用此代码从 testList1 中选择三个项目并添加到另一个列表 (testList2),但此代码有时会选择相同的项目。这是代码:

    void getRandomItem(){
    T getRandomElement<T>(List<T> testList1) {
      final random = new Random();
      var i = random.nextInt(testList1.length);
      return testList1[i];
    }
    for(var i=0;i<3;i++){
      var randomItem= getRandomElement(testList1);
      print(randomItem);
      testList2.add(randomItem);
      print(testList2);
    }

  }

按钮事件:

 onPressed: () {
        getRandomItem();
          },

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 2021-01-24
    • 2022-10-15
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多