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

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

两个思路:

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

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

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

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

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元素。

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

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

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

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

从数组随机抽取5个不重复_Power Query 如何保证随机抽取元素不重复相关推荐

  1. 每天一道LeetCode-----给定大小为n+1的数组,元素大小在[1 : n]之间,只有一个元素会重复出现多次,找到重复的那个

    Find the Duplicate Number 原题链接Find the Duplicate Number 给定一定大小为n+1的数组,数组中的元素只可能是1到n中的数字,包括1和n.在数组中,有 ...

  2. 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

    链接:381. O(1) 时间插入.删除和获取随机元素 - 允许重复 题解: class RandomizedCollection { private:std::unordered_map<in ...

  3. java数组练习题---创建元素不重复的数组

    题目:创建一个8元素的数组并输出,元素在1-10之间随机生成,且不相同: 题目表面上看似简单,实际却有一个最大的难点-----如何保证元素不重复: 因为元素是随机生成的且逐一赋值的,所以就可以在这一阶 ...

  4. R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串

    R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...

  5. 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来

    题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...

  6. 力扣 O(1) 时间插入、删除和获取随机元素 - 允许重复

    力扣 O(1) 时间插入.删除和获取随机元素 - 允许重复 题目描述 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构. 注意: 允许出现重复元素. insert(val):向集 ...

  7. 人工智能笔记之专业选修课4.1.5 - 博弈论 9.重复博弈,效用,随机博弈

    重复博弈 (repeated games) 当我们考虑世界上绝大部分互动时,其中很多不止会发生一次 市场上的公司 它们与竞争对手活动 朋友,你会交换吗,你会在朋友需要帮助时帮助他们吗?你需要时他们会帮 ...

  8. mysql随机不连续数据_用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串...

    用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串 前言: RAND函数,返回在范围0到1.0内的随机浮点值.如果一个整数参数N被指定,它被用作种子值. 一,朋友问题描述如下 ...

  9. 【回溯算法】【打卡第179道】:leetCode :39. 组合总和(数组中的元素可以重复使用)

    1.题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式 ...

最新文章

  1. 如何在VirtualBox虚拟机软件上安装Win7虚拟系统
  2. Ultra96_v2实现交通标示识别
  3. HDU-5895 Mathematician QSC
  4. 【渝粤题库】陕西师范大学292969 会计学 作业 (专升本、高起本)
  5. LeetCode 302. 包含全部黑色像素的最小矩形(BFS)
  6. C语言逗号表达式 - C语言零基础入门教程
  7. mac怎么查node版本_py2neo基本操作(v4版本,亲测有效)
  8. Java中list对象的三种遍历方式
  9. Go Web 编程--超详细的模板库应用指南
  10. MySQL多表数据记录查询详解
  11. 各数据库要使用保留字的处理办法
  12. idea主题颜色Linux,intellij idea 主题大全,看不惯idea 那2种主题的来这里了
  13. 十天精通CSS3学习笔记 part3
  14. sicily 1282. Computer Game
  15. 注册表修改服务器连接数量,如何通过Win10注册表更改时间服务器参数值?
  16. 保姆级教程:个人深度学习工作站配置指南
  17. 开源多云技术平台——Choerodon猪齿鱼发布0.24版本
  18. Enterprise Architect安装
  19. vue3和vue2不同点总结
  20. Word排版过程中多个参考文献一起引用

热门文章

  1. PolarDB for PostgreSQL 开源路线图
  2. 代理网关设计与实现(基于NETTY)
  3. 干掉讨厌的 CPU 限流,让容器跑得更快
  4. 厂商 push 不通排查指南
  5. 快速验证业务决策,“玩转”用户增长
  6. 云上快速搭建Serverless AI实验室
  7. X-Pack Spark归档POLARDB数据做分析
  8. 云原生领域首本架构白皮书,你Get到了吗?
  9. 腾讯TAD Sim2.0领跑自动驾驶仿真市场 双擎驱动构建新一代仿真平台
  10. Serverless 终结 Kubernetes?