如何将任何数字转换为1到10之间的值?
例如,给定123,执行每次返回1到10之间相同值的操作。
我使用它来按用户的ID分配10种不同的颜色。我需要一个函数,它总是为该用户的ID提供相同的1-10颜色值。
我以为我可以使用modulo运算符来做这样的事情,但还没弄明白。
答案 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