Flutter多项随机选择插件multiple_random_choice的使用
Flutter多项随机选择插件multiple_random_choice的使用
multiple_random_choice
是一个用于生成多个随机选择的函数库。它可以等概率或带权重地从选项中进行随机选择。
特性
- 在等概率条件下从选项中生成多个随机选择。
- 带权重地从选项中生成多个随机选择。
使用/示例
import 'package:multiple_random_choice/multiple_random_choice.dart';
// 带权重的多个随机选择
final m = {
'A': 1.0,
'B': 2.0,
'C': 10.0,
'D': 20,
'E': 1,
};
final s = randomMultipleWeightedChoice<String>(m, 3, null);
print(s);
// ex. {C, D, B}
// 等概率的多个随机选择
final ss = randomMultipleChoice<String>(['A', 'B', 'C', 'D', 'E'], 2, null);
print(ss);
// ex. {C, D}
你可以在 example
文件夹中查看更多示例。
完整示例Demo
以下是一个完整的示例代码,展示了如何使用 multiple_random_choice
插件进行带权重和等概率的随机选择:
// ignore_for_file: avoid_print
import 'dart:collection';
import 'dart:math';
import 'package:multiple_random_choice/multiple_random_choice.dart';
void main() {
// 带权重的多个随机选择
// 选项-权重映射
final m = {
'A': 1.0,
'B': 2.0,
'C': 10.0,
'D': 20,
'E': 1,
};
final countMap = <String, int>{};
for (int i = 0; i < 10000; i++) {
final s = randomMultipleWeightedChoice<String>(m, 3, null);
final sts = SplayTreeSet.of(s);
final skey = sts.join();
if (countMap.containsKey(skey)) {
countMap[skey] = countMap[skey]! + 1;
} else {
countMap[skey] = 1;
}
}
final le = countMap.entries.toList();
le.sort((a, b) => -1 * a.value.compareTo(b.value));
print(LinkedHashMap.fromEntries(le));
// ex. {BCD: 4734, CDE: 2334, ACD: 2280, BDE: 223, ABD: 219, ADE: 87, BCE: 53, ABC: 45, ACE: 24, ABE: 1}
// 等概率的多个随机选择
final ss = randomMultipleChoice<String>(['A', 'B', 'C', 'D', 'E'], 2, null);
print(ss);
// ex. {C, D}
// 等概率的多个随机选择(指定Random对象)
final ssr = randomMultipleChoice<String>(['A', 'B', 'C', 'D', 'E'], 2, Random());
print(ssr);
// ex. {B, E}
}
更多关于Flutter多项随机选择插件multiple_random_choice的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter多项随机选择插件multiple_random_choice的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用multiple_random_choice
插件的一个简单示例。这个插件允许你在列表中进行多项随机选择。首先,你需要确保已经添加了该插件到你的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
multiple_random_choice: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装插件。
接下来是一个使用multiple_random_choice
插件的示例代码:
import 'package:flutter/material.dart';
import 'package:multiple_random_choice/multiple_random_choice.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Multiple Random Choice Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> items = List.generate(20, (index) => 'Item $index');
List<String> selectedItems = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Multiple Random Choice Example'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 配置多项随机选择的参数
final RandomChoiceConfig config = RandomChoiceConfig(
totalItems: items.length,
selectCount: 5, // 选择5个随机项
);
// 执行随机选择
final List<int> selectedIndices = await MultipleRandomChoice.choose(config);
// 根据选中的索引获取对应的项
setState(() {
selectedItems = selectedIndices.map((index) => items[index]).toList();
});
},
child: Text('Random Select 5 Items'),
),
SizedBox(height: 20),
if (selectedItems.isNotEmpty)
Text(
'Selected Items: ${selectedItems.join(', ')}',
style: TextStyle(fontSize: 20),
),
],
),
);
}
}
解释
- 依赖导入:在
pubspec.yaml
中添加multiple_random_choice
依赖。 - 创建主应用:
MyApp
是应用的主入口,它包含一个MaterialApp
。 - 主页面:
MyHomePage
是一个有状态的页面,它包含了一个按钮和显示选中项的文本。 - 按钮点击事件:当按钮被点击时,使用
MultipleRandomChoice.choose
方法进行多项随机选择。 - 配置参数:
RandomChoiceConfig
对象用于配置随机选择的参数,比如总项数和选择数量。 - 更新UI:根据选中的索引更新
selectedItems
列表,并在UI中显示。
这个示例展示了如何使用multiple_random_choice
插件在Flutter应用中实现多项随机选择功能。你可以根据实际需求调整选择数量和列表项。