在C中的两点之间挑选随机数

use*_*889 4 c random

我想知道,是否有可能在c中的两个限制之间生成一个随机数.即我的程序设置如下:

function x
{
    generate random number;
}

while(1)
{
    function x;
    delay
}
Run Code Online (Sandbox Code Playgroud)

所以我需要在每次调用函数时生成一个随机数,但数字必须介于100和800之间

我知道有一个已经制作的函数叫做random和randmize,stdlib.h 我只是不知道如何创建上限和下限

谢谢

abe*_*nky 6

首先,不要忘记为PRNG播种一次且仅播种一次:

srand(time(NULL));
Run Code Online (Sandbox Code Playgroud)

然后,这个功能应该做你想要的.
(经过轻微测试,似乎有效)

int RandRange(int Min, int Max)
{
    int diff = Max-Min;
    return (int) (((double)(diff+1)/RAND_MAX) * rand() + Min);
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你会想:

x = RandRange(100, 800);  /* x will be between 100 and 800, inclusive */
Run Code Online (Sandbox Code Playgroud)

这使用浮点数学,可能比模数(%)算术慢,但偏差较小.