在LUA中获取一个范围之间的随机数列表,但每个数字允许x组重复项

时间:2018-11-20 04:23:24

标签: lua

在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个相同的数字。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用“合并技巧”:

  1. 为5个(10 /重复数)元素创建“不规则的”数字数组:1,2,5,7,9

  2. 重复#1

  3. 合并数组。

您可以使用minValue,maxValue,totalNumber,numberOfDublicates的参数将其通用化,但是需要更多的代码来处理10/3问题和maxValue

答案 1 :(得分:0)

  • 生成一个具有以下范围的非随机数字的顺序列表 没有重复。
  • 将它们添加到表中,但将每个数字相加X倍,其中X 是允许的重复项总数。所以我们知道有一张桌子x 每次列出的每个数字的X倍次数。
  • 随机播放表,或生成一个随机数列表,或同时生成两者。
  • 然后只需使用生成的从表中提取数字 数字作为“重复”表的数字键值。
  • 您可以在这些键值处存储任何内容,因此适用于 任何东西..不仅仅是数字。