我有一个名为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。
CCD_ 6映射到125。
你能帮我处理伪代码吗。
谢谢!
假设你有三个数字(a,b,c)
,你可以使用这个等式:
result = (a-1) * 5^2 + (b-1) * 5 + c
= 25*a + 5*b + c - 30
这是基于Rand5
在[1,..,5]
中返回的数字,而不是像一些随机函数那样基于[0,..4]
…
为了增加一点背景解释,这个等式将三个随机数视为以5为基数的三位数:
abc(base 5) = (5^2 * a) + (5 * b) + c