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.