在范围之间创建随机偶数

use*_*514 0 c++ random srand

好的我需要创建一个54到212之间的偶数随机数.唯一的问题是它必须在一个声明中完成.我有一个类在一个范围内生成随机数,但就像我说的,我想在一个语句中做到这一点.我想出了这个,但它没有正常工作.有任何想法吗?

int main()
{

    srand( time(NULL));
    int i;

    i =  (rand() % 106) * 2;

    cout << i;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

IVl*_*lad 9

在区间中生成任意数字[27, 106]并将其乘以2.您的问题是您没有下限.

int i = 2 * (27 + rand() % (106 - 27 + 1))  
Run Code Online (Sandbox Code Playgroud)

通常,要生成使用中的随机数[a, b]:

int i = a + rand() % (b - a + 1)
Run Code Online (Sandbox Code Playgroud)

要知道为什么这个作品,尝试简单的例子,例如[2, 4],[3, 7]等等.

  • @Goutam - `rand()`生成一个随机数`> = 0`.把它模数为"b - a + 1"将把它放在`[0,b - a]`中.添加`a`将把它放在`[a,b]`中. (2认同)