1

我在我的公司使用内部语言,他们只有Random()返回 0 到 1 之间的浮点数。

我需要移植一段使用的 C++ 代码rand()

int b = rand() % (i+1);

我查看了文档,但不确定如何使用 myRandom()生成一个介于 0 之间的数字,i+1这就是上面代码的作用,对吧?

我尝试乘以但没有i+1得到Random()相同的结果,这就是为什么我不确定我所做的是否正确。

我预计由于不同的随机函数导致结果之间存在差异,但我仍然想确保我正确翻译它。

4

2 回答 2

4

你需要乘以Random()ii+1

C ++返回一个介于andrand()之间的整数,但您返回一个介于and之间的浮点数,因此将with的输出相乘并取结果的整数部分将为您提供一个整数,其中给出的是什么。0RAND_MAXRandom()01Random()i[0,i]rand() %(i+1)

于 2012-10-08T03:07:38.553 回答
2

Rand() 给你一个介于 0 和 RAND_MAX 之间的数字,在应用 mod 运算符之后,你最终会得到一个介于 0 和 i(包括 i)之间的数字。

要对 Random() 执行相同操作,您需要乘以 ( i+1 ),然后取其底数(向下舍入):

b = floor( Random() * (i+1) ) 

这将根据需要为您提供一个从 0 到 i 的数字(包括栅栏柱)。

于 2012-10-08T03:14:26.710 回答