Flutter随机数生成插件mt19937的使用
Flutter 随机数生成插件 mt19937 的使用
Dart 实现了 Mersenne Twister 伪随机数生成器。
提供了 MT19937、MT19937-64 以及适用于原生和 Web 平台的可配置实现。
使用
您可以查看 示例。
运行测试
您可以查看 mt19937_test.dart
文件顶部的说明。
以下是一个完整的示例,展示了如何在 Flutter 应用程序中使用 mt19937
插件:
import 'package:flutter/material.dart';
import 'package:fixnum/fixnum.dart';
import 'package:mt19937/mt19937.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('MT19937 示例'),
),
body: Center(
child: RandomNumberGenerator(),
),
),
);
}
}
class RandomNumberGenerator extends StatefulWidget {
[@override](/user/override)
_RandomNumberGeneratorState createState() => _RandomNumberGeneratorState();
}
class _RandomNumberGeneratorState extends State<RandomNumberGenerator> {
List<int> _randomIntegers = [];
List<double> _randomDoubles = [];
List<BigInt> _randomBigInts = [];
[@override](/user/override)
void initState() {
super.initState();
generateRandomNumbers();
}
void generateRandomNumbers() async {
// 提供一个原始的 MT19937 生成器。
var mt = MersenneTwister();
setState(() {
_randomIntegers = List<int>.generate(10, (_) => mt());
});
// 也提供了 [Random] 接口。
var random = RandomMt19937();
setState(() {
_randomIntegers.addAll(List<int>.generate(10, (_) => random.nextInt(100)));
_randomDoubles = List<double>.generate(10, (_) => random.nextDouble());
});
var random64 = RandomMt19937_64();
setState(() {
_randomBigInts = List<BigInt>.generate(
10,
(_) => random64.nextBigInt(random64.exclusiveMax),
);
});
// 也提供了一个可配置的引擎,预配置为 MT19937(32位字)和 MT19937-64(64位字)。
var seed = DateTime.now().millisecondsSinceEpoch;
var mt64 = MersenneTwisterEngine.w64()..init(Int64(seed));
setState(() {
_randomBigInts.addAll(List<BigInt>.generate(10, (_) => mt64()));
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('随机整数:', style: TextStyle(fontSize: 18)),
Text(_randomIntegers.join(', '), style: TextStyle(fontSize: 16)),
SizedBox(height: 20),
Text('随机双精度浮点数:', style: TextStyle(fontSize: 18)),
Text(_randomDoubles.join(', '), style: TextStyle(fontSize: 16)),
SizedBox(height: 20),
Text('随机大整数:', style: TextStyle(fontSize: 18)),
Text(_randomBigInts.join(', '), style: TextStyle(fontSize: 16)),
],
);
}
}
更多关于Flutter随机数生成插件mt19937的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter随机数生成插件mt19937的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用mt19937
插件来生成随机数是一个不错的选择,mt19937
是一个基于Mersenne Twister算法的随机数生成器,以其长周期和高维度均匀性而著名。以下是如何在Flutter项目中集成并使用mt19937
插件的代码示例。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加mt19937
依赖:
dependencies:
flutter:
sdk: flutter
mt19937: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入mt19937
插件:
import 'package:mt19937/mt19937.dart';
3. 使用MT19937生成随机数
以下是一个完整的示例,展示了如何使用mt19937
插件生成随机数:
import 'package:flutter/material.dart';
import 'package:mt19937/mt19937.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MT19937 Random Number Generator',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: RandomNumberScreen(),
);
}
}
class RandomNumberScreen extends StatefulWidget {
@override
_RandomNumberScreenState createState() => _RandomNumberScreenState();
}
class _RandomNumberScreenState extends State<RandomNumberScreen> {
MT19937 _mt19937;
List<int> _randomNumbers = [];
@override
void initState() {
super.initState();
// 初始化MT19937实例,可以使用任意种子,这里使用当前时间戳作为种子
_mt19937 = MT19937(seed: DateTime.now().millisecondsSinceEpoch);
// 生成一些随机数
for (int i = 0; i < 10; i++) {
_randomNumbers.add(_mt19937.nextInt(1000)); // 生成0到999之间的随机数
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MT19937 Random Number Generator'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Generated Random Numbers:'),
Text(
_randomNumbers.join(', '),
style: TextStyle(fontSize: 20),
),
],
),
),
);
}
}
代码解释
- 添加依赖:在
pubspec.yaml
中添加mt19937
依赖。 - 导入插件:在Dart文件中导入
mt19937
包。 - 初始化MT19937实例:在
initState
方法中,使用当前时间戳作为种子初始化MT19937
实例。 - 生成随机数:使用
_mt19937.nextInt(1000)
生成0到999之间的随机数,并将它们添加到_randomNumbers
列表中。 - 显示随机数:在UI中显示生成的随机数。
这样,你就可以在Flutter应用中轻松地使用mt19937
插件生成随机数了。