Class RandomPicker<T>

工具类库:从选项池中随机挑选n个选项

Example

const picker = new RandomPicker([1, 2, 3, 4, 5]);

// 从选项池中随机挑选1个选项
picker.pick(); // 返回1,2,3,4,5中的1个
// 从选项池中随机挑选2个选项
picker.pick(2); // 返回1,2,3,4,5中的2个,可供选则的有5个,多个可能会出现重复的

// 从中随机挑选出选项。每拿走一个选项,都会对剩余的选项重新计算选中几率,可选数量减1
picker.take(); // 返回1,2,3,4,5中的1个,之后pick或take可供选择的只剩下4个
picker.take(2); // 返回1,2,3,4,5中的2个,之后pick或take可供选择的只剩下2个,多个不会出现重复的

// 重置后,会恢复选项池
picker.reset();

// 添加选项
picker.option(6); lottery-pool

// 恢复初始选项,去除picker.option方法添加的选项
picker.resetWithSeed();

Type Parameters

  • T

Hierarchy

  • RandomPicker

Constructors

Properties

pool: OptionsPool<T>

选项池

store: OptionsStore<T>

选项存储 全部选项,包含后面option添加的

seed: Seed<T> = []

初始选项,不包含后面option添加的

Accessors

  • get poolLen(): number
  • Returns

    选项池数组长度

    Returns number

  • get poolOptions(): T[]
  • 获取选项池剩余的选项

    Returns T[]

Methods

  • Protected

    刷新选项存储

    Returns void

  • 获取随机可能会重复的1个选项

    会被take影响到

    Returns null | T

  • See

    pick

    Type Parameters

    • N extends 1

    Parameters

    • count: N

    Returns null | T

  • 获取随机可能会重复的count个选项

    See

    pick

    Type Parameters

    • N extends number

    Parameters

    • count: N

    Returns Tuple<null | T, N, []>

  • 获取随机不会重复的1个选项。

    取出以后不能在次获取,除非reset

    会影响到pick

    Returns null | T

  • See

    take

    Type Parameters

    • N extends 1

    Parameters

    • count: N

    Returns null | T

  • 获取随机不会重复的count个选项

    See

    take

    Type Parameters

    • N extends number

    Parameters

    • count: N

    Returns Tuple<null | T, N, []>

  • 移除一个选项

    Returns

    操作成功或失败

    Parameters

    • option: T

      选项

    Returns boolean

  • 获取选项选中的几率

    Returns

    几率:100分满值

    Parameters

    • option: T

      选项

    Returns number