Flutter随机数生成插件randomness的使用

Flutter 随机数生成插件 randomness 的使用

开始使用

pubspec.yaml 文件中添加以下依赖:

dependencies:
  randomness: ^0.1.0

然后在 Dart 文件中导入:

import 'package:randomness/randomness.dart';

使用说明

随机数生成

以下是等价于 Random().nextInt(5) 的几种方式。集合 includeexclude 可以包含点或区间,并使用方括号表示。

Randomness.randomInt(include: {0,1,2,3,4}) // 等同于 [0, 4]
Randomness.randomInt(include: {[0,4]}) // 等同于 [0, 4]
Randomness.randomInt(include: {0,1,[2,4]}) // 等同于 [0, 1] 和 [2, 4]
Randomness.randomInt(include: {[0,100]}, exclude: {5,[6,100]}) // 等同于 [0, 100],但排除了 5 和 [6, 100]

默认情况下,范围是从 1 到 1000(包括 1 和 1000):

Randomness.randomInt()
// 输出例如:681
加密安全的随机数

从 1 到 100 区间内生成加密安全的随机整数:

Randomness.randomInt(include: {[1,100]}, cryptographicallySecure: true)
// 输出例如:30

生成加密安全的随机浮点数:

Randomness.randomDouble(min: -3, max: -1, cryptographicallySecure: true)
// 输出例如:-1.7392379311552753
带权重的概率

给定权重。有 2/3 的概率为 0,1/3 的概率为 1、2、3 或 4:

Randomness.randomInt(include: {0,1,2,3,4}, weights: {0: 2, everythingElse: 1})

忽略不在权重中的元素。这将始终返回 0:

Randomness.randomInt(include: {0,1,2,3,4}, weights: {0:1})
随机字符串生成

默认长度为 10,默认不生成空格:

Randomness.randomString()
/*
输出例如:-((f)4$=r4
*/

字符串可以包含数字、大写字母、小写字母、符号和空格。这将生成数字和空格:

Randomness.randomString(length: 100, includeSpaces: true, excludeSymbols: true, excludeUppercase: true, excludeLowercase: true)
// 输出例如:3828 5491 304 0065273406 9 54745452 657207928  4469 078258338317555697369931555479 28159170 32561895

加密安全的字符串,其中一半为 A:

Randomness.randomString(length: 50, cryptographicallySecure: true, weights: {'A': 1, everythingElse: 1})
// 输出例如:ACAAAAAABAAAp3litAAAAAAwAAAAAAl$AEe4IAAtAA*A#)AA6[
随机列表元素选择

从列表中随机选择一个元素,权重可能对某些数据类型不起作用:

Randomness.randomFromList([{1,2}, 'a', 3], weights: {'a': 1, everythingElse: 1}, cryptographicallySecure: true)
// 输出例如:a
随机 n 位数生成

生成随机 n 位数。由于解析会忽略开头的 0 并且无法解析非常大的整数,所以返回的是字符串。以下示例给出平均一半为 4,另一半为 5、6、7、8 或 9:

Randomness.randomNDigits(numberOfDigits: 100, excludeDigits: {0,1,2,3}, weights: {4:1, everythingElse:1})
// 输出例如:4944445978444496449444486964474547474444767454648456444448886854446774444444648654448475857444494895

示例代码

以下是一个完整的示例代码,展示了如何使用 randomness 插件生成各种类型的随机数和字符串:

import 'package:randomness/randomness.dart';
import 'dart:core';

/// 运行程序,比较控制台日志与代码
void main() {
  print('''
  相当于 Random().nextInt(5)
  ${Randomness.randomInt(include: {0,1,2,3,4})}
  ${Randomness.randomInt(include: {[0,4]})}
  ${Randomness.randomInt(include: {0,1,[2,4]})}
  ${Randomness.randomInt(include: {[0,100]}, exclude: {5,[6,100]})}
  
  默认范围是 1 到 1000(包括 1 和 1000)
  ${Randomness.randomInt()}
  
  1 到 100 区间内生成加密安全的随机整数
  ${Randomness.randomInt(include: {[1,100]}, cryptographicallySecure: true)}

  给定权重。有 2/3 的概率为 0,1/3 的概率为 1、2、3 或 4:
  ${Randomness.randomInt(include: {0,1,2,3,4}, weights: {0: 2, everythingElse: 1})}
  
  忽略不在权重中的元素。这将始终返回 0。
  ${Randomness.randomInt(include: {0,1,2,3,4}, weights: {0:1})}
  
  默认长度为 10,默认不生成空格。
  ${Randomness.randomString()}
  
  字符串可以包含数字、大写字母、小写字母、符号和空格。这将生成数字和空格。
  ${Randomness.randomString(length: 100, includeSpaces: true, excludeSymbols: true, excludeUppercase: true, excludeLowercase: true)}
  
  加密安全的字符串,其中一半为 A
  ${Randomness.randomString(length: 50, cryptographicallySecure: true, weights: {'A': 1, everythingElse: 1})}
  
  加密安全的随机双精度浮点数
  ${Randomness.randomDouble(min: -3, max: -1, cryptographicallySecure: true)}
  
  从列表中随机选择一个元素。权重可能对某些数据类型不起作用。
  ${Randomness.randomFromList([{1,2}, 'a', 3], weights: {'a': 1, everythingElse: 1}, cryptographicallySecure: true)}
  
  随机 n 位数生成。由于解析会忽略开头的 0 并且无法解析非常大的整数,所以返回的是字符串。以下示例给出平均一半为 4,另一半为 5、6、7、8 或 9
  ${Randomness.randomNDigits(numberOfDigits: 100, excludeDigits: {0,1,2,3}, weights: {4:1, everythingElse:1})}
  ''');
}

更多关于Flutter随机数生成插件randomness的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter随机数生成插件randomness的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中生成随机数可以使用Dart的内置库 dart:math,而不需要使用额外的插件。dart:math 库提供了生成随机数的功能。以下是一个简单的示例,展示如何在Flutter中生成随机数。

使用 dart:math 生成随机数

  1. 导入 dart:math

    首先,你需要在你的Dart文件中导入 dart:math 库:

    import 'dart:math';
    
  2. 生成随机数

    你可以使用 Random 类来生成随机数。以下是一个简单的示例,生成一个0到99之间的随机整数:

    import 'dart:math';
    
    void main() {
      Random random = Random();
      int randomNumber = random.nextInt(100); // 生成0到99之间的随机整数
      print('Random Number: $randomNumber');
    }
    
  3. 生成随机浮点数

    如果你需要生成一个0到1之间的随机浮点数,可以使用 nextDouble() 方法:

    import 'dart:math';
    
    void main() {
      Random random = Random();
      double randomDouble = random.nextDouble(); // 生成0到1之间的随机浮点数
      print('Random Double: $randomDouble');
    }
    
  4. 生成指定范围内的随机数

    你可以通过一些简单的数学运算来生成指定范围内的随机数。例如,生成10到20之间的随机整数:

    import 'dart:math';
    
    void main() {
      Random random = Random();
      int min = 10;
      int max = 20;
      int randomNumber = min + random.nextInt(max - min + 1); // 生成10到20之间的随机整数
      print('Random Number: $randomNumber');
    }
    

使用 randomness 插件(如果存在)

如果你确实需要使用一个名为 randomness 的插件,首先你需要确保它已经添加到你的 pubspec.yaml 文件中:

dependencies:
  randomness: ^1.0.0  # 请使用最新版本

然后在你的Dart文件中导入并使用它:

import 'package:randomness/randomness.dart';

void main() {
  var random = Randomness();
  int randomNumber = random.nextInt(100); // 生成0到99之间的随机整数
  print('Random Number: $randomNumber');
}
回到顶部