/*
 * @lc app=leetcode.cn id=470 lang=javascript
 *
 * [470] 用 Rand7() 实现 Rand10()
 */

// @lc code=start
/**
 * The rand7() API is already defined for you.
 * var rand7 = function() {}
 * @return {number} a random integer in the range 1 to 7
 */
var rand10 = function () {
  while (true) {
    const num = (rand7() - 1) * 7 + rand7();
    if (num <= 40) {
      return (num - 1) % 10 + 1
    }
  }
};
// @lc code=end

// 取模运算 (num-1) % 10 + 1 是唯一能保证严格均匀分布的方法
// (rand_X() - 1) × Y + rand_Y() ==> 可以等概率的生成[1, X * Y]范围的随机数