int userHP = 100;
int enemyHP = rand() % ((userHP - 50) - (userHP - 75)) + 1;
好吧,由于某种原因,这似乎没有用,我试图为敌人获得50 -25马力。
也是一个百分比...就像
int enemyHP = rand() % ((userHP / 50%) - (userHP / 75%)) + 1;
但是id喜欢坚持使用整数而不是弄乱花车或双打......有人能帮助我吗?
答案 0 :(得分:4)
获取[最小值,最大值]范围内的随机数:
使用此整数近似值:
int RandomNumber = Minimum + rand() % (Maximum - Minimum + 1);
并确保(最大 - 最小)< = RAND_MAX
或者使用这个更漂亮的浮动:
double RandomNumber = Minimum + rand() * (double)(Maximum - Minimum) / RAND_MAX;
答案 1 :(得分:3)
int randRange(int a, int b) {return a + rand() % (1+b-a);}
编辑:Thanatos在下面的链接中指出,这种方法可以给出具有统计上差的随机性的数字。出于游戏目的,它可以正常工作,但不要将其用于科学或加密应用程序! (实际上根本不使用rand(),使用像Mersenne twister这样的东西。)
答案 2 :(得分:3)
对此执行一些代数:
rand() % ((userHP - 50) - (userHP - 75)) + 1;
rand() % (userHP - 50 - userHP + 75) + 1;
rand() % (userHP - userHP - 50 + 75) + 1;
rand() % (-50 + 75) + 1;
......你可以很快看到出了什么问题。为什么不使用双打?