shiro如何保证session不失效_Power Query 如何保证随机抽取元素不重复

继续昨天的话题,昨天我们实现完全的随抽取列表元素,有一个问题就是可能几次会抽取同一个位置的元素:

0154bf34878f77abd6c1bf76bd34fe0f.png

1-50中随机抽取5个数值,点击刷新,就会出现不同的结果,如上图可能会出现两个相同的数值,如何确保每次都能抽取到不同的元素?

两个思路:

  • 每次抽取结束后,被抽到的元素从列表中移除,再进行下次抽取
  • 确保抽取的元素位置不重复

我们今天要用到的是第二种,我们用两个函数来确保取得非重复的位置:

  • List.Distinct:获取非重复元素列表
  • List.FirstN:获取前几个元素

昨天讲的产生随机整数的套路继续沿用,我们来看自定义函数:

6c07b3db7fac874c7153905edc67e0bb.png

let

源 =(l,n)=>List.Transform(

List.FirstN(

List.Distinct(

List.Transform(

{1..100},

(x)=>Number.IntegerDivide(Number.RandomBetween(0,List.Count(l)-1),1))

),

n),

(x)=>l{x})

in

代码有点长,我们分解来看:

最里层的List.Transform是产生一个随机整数的列表,为了防止出现重复导致列表元素去重复后数量不够,我们要求做100个随机数。具体的随机数的公式就不解释了,参照昨天的内容。

List.Distinct把这100个随机整数列表去重复。

List.FirstN取非重复整数列表的前n个元素。

最外层的List.transform就是根据List.FirstN产生的地址,取出列表l元素。

这样大家是不是就能够了解这个函数的意思了。

我们来看引用这个函数的结果:

60cc31cae73e22f4e9af82e134ff1fcd.png

我们从小写字母中,随机抽取5个字母,保证不重复。

欢迎加入圈子,学习更多Power Query相关的知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值