在LUA中有很多生成随机数的例子,它们没有重复,只是一个标准的数学。random(x,y(可以得到一组范围内的随机整数。。。。
但我很难在一个范围内找到一组随机数,但允许x个重复数。对于我的即时需求,我可以允许1组重复,但如果有代码可以为未来的项目设置"重复值",那就太好了。
示例:我想生成一个包含1-10之间的10个整数的列表…每个值可以是1-10之间的任何值,但任何一个数字只能生成并添加到列表中两次。
示例结果:1,1,2,4,5,7,8,9
在这个例子中,result math.random((试图吐出3个或更多相同数字,但如果已经产生了2个相同数字,代码会让它返回并重试。
提前感谢!
您可以使用"合并技巧":
-
为5个(10/配音数量(元素创建"unical"数字数组:1,2,5,7,9
-
中继器#1
-
合并数组。
你可以用minValue、maxValue、totalNumber、numberOfDublicates的参数来概括它,但需要更多的代码来处理10/3问题和maxValue<totalNumber。
- 生成包含没有重复
- 将它们添加到表中,但将每个数字添加X次,其中X是允许的重复项总数。所以我们知道有一张x表倍,每个单独的数字列出X倍的次数
- 打乱表格,或者生成一个随机数列表,或者两者兼而有之
- 然后使用生成的数字作为"重复"表的数字键值
- 您可以在这些键值中存储任何内容,因此这适用于任何东西不仅仅是数字