用RandA()实现RandB(),A<B

109 阅读1分钟
  • RandA()表示可以均匀生成[1,A]范围的随机数的函数

  • (randX() - 1) * Y + randY() ==> 可以等概率的生成[1, X*Y]范围的的随机数,即实现了randXY()

  • r7→r10:

  1. (r7-1)*7+r7 : [1,49]

  2. [41,49]则重新采样

  3. [1,40] 即r40 4.(r40 – 1) % 10 + 1 →r10

力扣相关题目:

470. 用 Rand7() 实现 Rand10()