繁体   English   中英

C++ 中的 rand() function 给出的数字超出了范围

[英]The rand() function in C++ is giving a number outside the range

所以我想写一个关于乔丹支付账单之类的故事。 我使用 rand function 为他的工资 3.5k - 4.5 和账单 700 -1.5k 找到一个随机数。 我相信我的公式是正确的,但通常它会在该区域之外生成一个数字。 下面是代码和结果。

{
    srand(time(NULL));  
    cout << fixed;
    cout << setprecision(2);
    float money = 9000;
    int minbill = 700;
    int maxbill = 1500;
    int minsal = 3500;
    int maxsal = 4500;
    float rent = 3000;

    cout << "[Jordan's Balance: Gp" << money << "]\n\n";
    cout << "Jordan's rent costs Gp" << rent <<".\n";
    float bill = (rand()%maxbill-minbill+1)+minbill;
    cout << "Jordan's bills costs Gp" << bill << ".\n";
    float totalb = rent + bill;
    cout << "Jordan needs to pay a total of Gp" << totalb << "\n\n";
    float sal = (rand()%maxsal-minsal+1)+minsal;
    cout << "Jordan received a salary of Gp" << sal << "!!\n";
    money = money + sal;
    cout << "[Jordan's Balance: Gp" << money << "]\n\n";
}

我预计乔丹的账单在 700-1.5k 左右,他的薪水在 3.5k-4.5k 左右,但它给了我一个低于这个数字的数字。


Jordan's rent costs Gp3000.00.
Jordan's bills costs Gp133.00.
Jordan needs to pay a total of Gp3133.00

Jordan received a salary of Gp1906.00!!
[Jordan's Balance: Gp10906.00]

(rand()%maxbill-minbill+1)是错误的。

rand()%maxbill可能会小于minbill 您需要使用rand() % (maxbill - minbill + 1)

float bill = rand() % (maxbill-minbill+1) + minbill;

同样,使用

float sal = rand() % (maxsal-minsal+1) + minsal;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM