lua - 在 LUA 中获取范围之间的随机数列表,但每个数字允许 x 组重复项
问题描述
在 LUA 中生成没有重复的随机数的例子有很多,只需一个标准的 math.random(x,y) 就可以得到一个范围内的一组随机整数....
...但我无法在一个范围之间找到一组随机数,但允许 x 数量的重复项。对于我的迫切需要,我可以允许一组重复项,但是如果有代码可以为未来的项目设置“重复值”,那就太好了。
示例:我想生成 1-10 之间的 10 个整数的列表...每个值可以是 1-10 之间的任何值,但任何一个数字只能生成并添加到列表中两次。
示例结果: 1,1,2,4,5,5,7,7,8,9
在这个例子中,结果 math.random() 试图吐出 3 个或更多相同的数字,但如果它已经产生了 2 个相同的数字,代码会让它返回并重试。
提前致谢!
解决方案
您可以使用“合并技巧”:
为 5 个(10/重复数)元素创建“单一”数字数组:1,2,5,7,9
重复 #1
合并数组。
您可以使用 minValue、maxValue、totalNumber、numberOfDublicates 的参数对其进行概括,但需要更多代码来处理 10/3 问题和 maxValue < totalNumber。
推荐阅读
- jquery - 如何在同一行引导程序上水平对齐 div
- sql - 将 MS Access SQL 选择查询转换为 VBA。使用聚合求和函数选择时中断
- algorithm - 一个涵盖所有时间复杂性的问题
- matlab - 在 Matlab 中将 GUI 链接在一起
- docker - 无法连接到网络外的kafka
- javascript - 使用 JavaScript 访问外部 json 文件
- r - 如何取消过滤或清除 r dplyr 中的过滤器?
- amazon-web-services - 使用 URL 远程启动(触发)EC2 amazon windows 服务器
- python - Pandas 关联一列到多列按列范围分组
- c++ - 在字符串开头附加字符会导致超出内存限制