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



在LUA中有很多生成随机数的例子,它们没有重复,只是一个标准的数学。random(x,y(可以得到一组范围内的随机整数。。。。

但我很难在一个范围内找到一组随机数,但允许x个重复数。对于我的即时需求,我可以允许1组重复,但如果有代码可以为未来的项目设置"重复值",那就太好了。

示例:我想生成一个包含1-10之间的10个整数的列表…每个值可以是1-10之间的任何值,但任何一个数字只能生成并添加到列表中两次。

示例结果:1,1,2,4,5,7,8,9

在这个例子中,result math.random((试图吐出3个或更多相同数字,但如果已经产生了2个相同数字,代码会让它返回并重试。

提前感谢!

您可以使用"合并技巧":

  1. 为5个(10/配音数量(元素创建"unical"数字数组:1,2,5,7,9

  2. 中继器#1

  3. 合并数组。

你可以用minValue、maxValue、totalNumber、numberOfDublicates的参数来概括它,但需要更多的代码来处理10/3问题和maxValue<totalNumber。

  • 生成包含没有重复
  • 将它们添加到表中,但将每个数字添加X次,其中X是允许的重复项总数。所以我们知道有一张x表倍,每个单独的数字列出X倍的次数
  • 打乱表格,或者生成一个随机数列表,或者两者兼而有之
  • 然后使用生成的数字作为"重复"表的数字键值
  • 您可以在这些键值中存储任何内容,因此这适用于任何东西不仅仅是数字

最新更新