C++ 将伪随机数修改为介于2个值之间;

C++ 将伪随机数修改为介于2个值之间;,c++,random,C++,Random,可能重复: 所以我用一个MT来生成我的伪随机数,我希望能够将这些数修改成一个数值范围内的值 这些是我现在拥有的函数,前两个是int函数,后两个是float函数,但它们似乎不能正常工作 static inline int randomi(int min, int max) { return Random() % (max-min)+min; } static inline unsigned long randomi(int max) { return Random() % m

可能重复:

所以我用一个MT来生成我的伪随机数,我希望能够将这些数修改成一个数值范围内的值

这些是我现在拥有的函数,前两个是int函数,后两个是float函数,但它们似乎不能正常工作

static inline int randomi(int min, int max)
{
    return Random() % (max-min)+min;
}

static inline unsigned long randomi(int max)
{
    return Random() % max;
}

static inline float randomf(float min, float max)
{
    return (Random() / ULONG_MAX) * (max-min)+min;
}

static inline float randomf(float max)
{
    return (Random() / ULONG_MAX) * max;
}

我如何使这些工作,使他们可以返回范围,可以是之间的任何地方,包括负范围或范围的任何一边的0

当您需要负数作为限制时,只需将整个选择向下移动

例:

为了实现..

假设
Random()
返回一个
无符号长
,则操作
Random()/ULONG_MAX
将导致一个
无符号长
0或1(1极不可能)。相反,请使用
Random()/(float)ULONG_MAX
* you need a random between -10 and +10:
* generate a random from 0 to 20 the do -10.