Expand a random range from 1–5 to 1–7

前端 未结 30 3149
一个人的身影
一个人的身影 2020-11-22 07:29

Given a function which produces a random integer in the range 1 to 5, write a function which produces a random integer in the range 1 to 7.

  1. What is a simple so
30条回答
  •  执念已碎
    2020-11-22 08:25

    I don't like ranges starting from 1, so I'll start from 0 :-)

    unsigned rand5()
    {
        return rand() % 5;
    }
    
    unsigned rand7()
    {
        int r;
    
        do
        {
            r =         rand5();
            r = r * 5 + rand5();
            r = r * 5 + rand5();
            r = r * 5 + rand5();
            r = r * 5 + rand5();
            r = r * 5 + rand5();
        } while (r > 15623);
    
        return r / 2232;
    }
    

提交回复
热议问题