给定任何数字,得到1到10之间的一致值

时间:2014-11-07 22:27:27

标签: ruby

如何将任何数字转换为1到10之间的值?

例如,给定123,执行每次返回1到10之间相同值的操作。

我使用它来按用户的ID分配10种不同的颜色。我需要一个函数,它总是为该用户的ID提供相同的1-10颜色值。

我以为我可以使用modulo运算符来做这样的事情,但还没弄明白。

1 个答案:

答案 0 :(得分:3)

你可以使用10的模数,然后加一(因为mod范围是独占的):

(123 % 10) + 1 # => 4
(124 % 10) + 1 # => 5

如果您想要较少的循环结果,可以在应用模数之前对数字进行散列:

(123.to_s.hash % 10) + 1 # => 10
(124.to_s.hash % 10) + 1 # => 7