我在公司使用内部语言,他们只有Random()
,返回0到1之间的浮点数。
我需要移植一段使用rand()
:
int b = rand() % (i+1);
我查看了文档,但不确定如何使用Random()
生成介于0和i+1
之间的数字,这就是上面的代码所做的,对吧?
我尝试将i+1
与Random()
相乘,但没有得到相同的结果,这就是为什么我不确定我所做的是否正确。
我期望由于不同的随机函数导致结果之间的差异,但我仍然希望确保我正确地翻译它。
答案 0 :(得分:4)
您需要将Random()
与i
相乘,而不是i+1
。
C ++ rand()
返回0
和RAND_MAX
之间的整数,但您的Random()
会在0
和1
之间返回一个浮点数,因此乘以使用Random()
输出i
并获取结果的整数部分将为[0,i]
提供rand() %(i+1)
给出的整数。
答案 1 :(得分:2)
Rand()给出一个介于0和RAND_MAX之间的数字,在应用mod运算符后,你得到一个介于0和i之间的数字(包括i)。
要对Random()执行相同的操作,您需要乘以(i + 1),然后再调整(向下舍入):
b = floor( Random() * (i+1) )
这将根据需要为您提供从0到i(包括围栏帖子)的数字。