已知一个随机数生成器n,求另一个随机数生成器m

已知random_m()随机数生成器的范围是[1, m] 求random_n()生成[1, n]范围的函数,m < n && n <= m *m
一般解法:

int random_n()
{
    int val = 0 ;
    int t; // t为n最大倍数,且满足 t <= m * m     
    do {         
        val = m * (random_m() - 1) + random_m();     
    } while (val > t);
    return val;
}

 

 

posted @ 2022-06-05 16:56  知道了呀~  阅读(71)  评论(0编辑  收藏  举报