将rand5映射到范围内的数字

时间:2016-09-28 11:00:28

标签: algorithm random

我有一个名为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。

你能用伪代码帮我吗?

谢谢!

1 个答案:

答案 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