我不太清楚这个函数在 C++ 中是如何工作的:
int rand_0toN1(int n) {
return rand() % n;
}
互联网上的另一个教程说要获得一个范围内的随机数,您需要做一些不同的事情,但是,a 是范围内的第一个数字,n 是范围内的项数:
int number = a + rand( ) % n;
我读到它应该返回一个介于 0 和 n-1 之间的随机数,但它是如何做到的?我知道 % 的意思是除以余数(所以 5 % 2 就是 1),但是最终如何给出 0 到 n-1 之间的数字呢?感谢您帮助理解这一点。我想我不明白 rand() 函数返回什么。
最佳答案
除以 n> 0 的模数(余数)始终在 [0, n] 范围内;这是模运算的基本属性。
a + rand() % n
不会返回 [0, n) 范围内的数字,除非 a=0;它返回 [a, n + a 范围内的 int
。
请注意,此技巧不会通常返回 uniformly distributed integers .
关于c++ - C++ 中的 rand() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571357/