产生随机数的问题

Trouble generating random numbers?

本文关键字:问题 随机数      更新时间:2023-10-16
rndmBid=rand() % (sellPtr->sellPrice + (1.25*sellPtr->startPrice));

这行怎么了?除了1.25(显然),其他都是整数,编译器给出一个错误,说invalid operands of types 'int' and 'double' to binary 'operator%'.

我试着改变startPricerndmBid加倍,没有运气。有什么建议吗?

一旦将double引入到算术表达式中,所有内容都被提升/转换为double。所以你需要转换回整数:

rndmBid = rand() % static_cast<int>( ... );

(我相信你意识到你的随机数不会均匀分布。)

(sellPtr->sellPrice + (1.25*sellPtr->startPrice)是双精度体,因为(1.25*sellPtr->startPrice)的结果是双精度体,因为1.25是双精度体。将结果强制转换为int,它将编译:

rndmBid=rand() % static_cast<int>(sellPtr->sellPrice + (1.25*sellPtr->startPrice));

rhs返回的是双精度类型,而%只能处理整数。将结果转换为整数:

rand() % static_cast<int>(sellPtr->sellPrice + (1.25 * sellPtr->startPrice));

您是在向双精度体添加int型,因此结果是双精度体,不能与%操作符一起使用。

要解决这个问题,您需要执行:

rndmBid=rand() % ((int)(sellPtr->sellPrice + (1.25*sellPtr->startPrice)));