You need to enable JavaScript to run this app. 在Flutter中如何从Array随机抽取指定数量元素并生成新数组
优惠活动
大模型
产品
解决方案
定价
更多

在Flutter中如何从Array随机抽取指定数量元素并生成新数组

Flutter 从字符串数组随机抽取指定数量元素实现方案

不需要引入第三方依赖,直接用Dart原生API即可实现,以下是两种常见场景的实现方式:

场景1:无重复抽取(默认推荐,抽取出的12个元素互不重复)

核心逻辑是先复制原数组、打乱数组顺序后取前12个元素,不会修改原始数组内容:

  • 首先导入dart内置的math库
import 'dart:math';
  • 完整实现代码示例
void main() {
  // 你的原始20个元素的字符串数组,替换为实际数组即可
  final List<String> originalList = List.generate(20, (index) => '示例文本${index + 1}');
  
  // 复制原数组后打乱,避免改动原数组
  final List<String> tempShuffled = List.from(originalList)..shuffle(Random());
  
  // 取前12个元素生成新数组
  final List<String> resultList = tempShuffled.take(12).toList();
  
  // 测试打印结果
  print(resultList);
}

场景2:允许重复抽取(抽取出的元素可能重复)

如果业务允许同一个元素被多次抽到,可以直接随机生成下标取值:

import 'dart:math';

void main() {
  final List<String> originalList = List.generate(20, (index) => '示例文本${index + 1}');
  final Random random = Random();
  
  // 生成12个随机下标取值组成新数组
  final List<String> resultList = List.generate(12, (_) {
    int randomIndex = random.nextInt(originalList.length);
    return originalList[randomIndex];
  });
  
  print(resultList);
}

注意:如果原数组本身存在重复元素,无重复抽取的方案也会保留原数组的重复特性,仅保证抽取时不会重复取同一个下标的元素。

内容的提问来源于stack exchange,提问作者salih suat kükrer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 10:15:01