如何在范围内生成随机数(-x,x)

joh*_*ohn 0 c++ random

嗨有可能使用rand()生成一个范围(-x,x)内的随机数.如果没有,我如何生成具有该范围的随机数?

Jer*_*fin 5

// return a random number between 0 and limit inclusive.
int rand_lim(int limit) {

    int divisor = RAND_MAX/(limit+1);
    int retval;

    do { 
        retval = rand() / divisor;
    } while (retval > limit);

    return retval;
}

// Return a random number between lower and upper inclusive.
int rand_lim(int lower, int upper) {
    int range = abs(upper-lower);

    return rand_lim(range) + lower;
}
Run Code Online (Sandbox Code Playgroud)

像往常一样,我在这个帖子中看到的所有其他人都会/将会产生至少略微偏斜的结果.