我有一个名为Rand5的函数,它提供1到5之间的随机数
我连续三次打电话给Rand5,所以我在1-5之间有三个数字。例如:(1,1,1)
,(1,2,5)
等
有125种可能的选项,我想将125个选项映射到1到125之间的数字。
所以:
(1,1,1)
映射到1.
(1,1,5)
映射到5.
(1,2,2)
映射到7.
(5,5,5)
映射到125。
你能用伪代码帮我吗?
谢谢!
答案 0 :(得分:5)
鉴于你有三个数字(a,b,c)
,你可以使用这个等式:
result = (a-1) * 5^2 + (b-1) * 5 + c
= 25*a + 5*b + c - 30
这是基于Rand5
返回[1,..,5]
中的号码,而不是[0,..4]
,因为某些随机函数会... {/ p>
要添加一些背景说明,此等式将三个随机数视为基数5中的三位数:
abc(base 5) = (5^2 * a) + (5 * b) + c