随机与步进取整

考虑一个问题,如果要从0-845随机取一个数,然后这个数必须是83的倍数。

可以这样操作,从845找到83最大的倍数,然后对倍数进行随机,随到几倍,则是多少
问题则转化成了如何找到845内83的最大倍数
很自然用除法,845/83得到的最大整数向下取整,则可以得到最大倍数
结果是10.18,也就是10

还有一个更简单的方法,直接随机0-845,我们让结果x对83取余,再让x减去余数,即完成了步进随机(向下取整),
步进向上取则可以x+(83-余)

留下评论