在我的程序中,我必须找到具有特定条件的两个随机值:
[2...n]
必须是int范围k
[i+2...n]
需要在i = rand() % n + 2;
k = rand() % n + (i+2);
所以我这样做了:
n = 7
但它一直给我错误的价值,比如
代表i = 4
我得到k = 11
和i = 3
或k = 8
和n = 553.98896
int(n)+float(str(n-int(n))[1:4])
我该如何解决这个问题?
答案 0 :(得分:2)
答案 1 :(得分:1)
正如评论所说,您的范围数学已关闭。
您可能会发现每次使用函数来一致地处理数学是很有用的。 e.g:
int RandInRange(int x0, int x1)
{
if(x1<=x0) return x0;
return rand() % (x1-x0+1) + x0;
}
然后用你想要的东西来调用它:
i = RandInRange(2,n);
k = RandInRange(i+2,n);