我想知道,是否有可能在c中的两个限制之间生成一个随机数.即我的程序设置如下:
function x
{
generate random number;
}
while(1)
{
function x;
delay
}
Run Code Online (Sandbox Code Playgroud)
所以我需要在每次调用函数时生成一个随机数,但数字必须介于100和800之间
我知道有一个已经制作的函数叫做random和randmize,stdlib.h
我只是不知道如何创建上限和下限
谢谢
首先,不要忘记为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)
这使用浮点数学,可能比模数(%)算术慢,但偏差较小.