在一个范围内随机浮动?

时间:2018-02-17 20:51:14

标签: c++ random double

我正在尝试在15.00到40.00之间创建一个随机数,用于计算。具体任务是建立一个程序,该程序接收售出的门票数量并计算这些门票销售的总收入,其中三种门票类型具有固定的价格值,其中一种门票类型具有随机价格值15.00美元和40.00美元。我怎样才能做到这一点?

我已接近这一点,但前提是我将mystmax和mystmin声明为'int'。我希望它们是双倍的,所以我可以得到$ 15.00到$ 40.00之间的每个小数值:

  unsigned seed = time(0);

    srand(seed);
    double mystery = (rand() % (mystmax - mystmin+1))+mystmin;

当我尝试将min和max设为双精度时,我得到的错误是:

“'int'和'double'类型的操作数无效,二元'运算符%'”

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:5)

<强>不

您既不需要也不想要货币的浮点数。

有一些方法可以使它工作(std::uniform_real_distribution将为您提供浮点随机值),但这样做有很多问题(为启动器舍入错误),而您根本不需要全部这两个货币价值之间的无穷小数。

所以,坚持一个整数,在你的情况下计算便士(美分?)。如果要转换为整数(美元?),则在最后除以100输出。