根据std :: shufle上的cppreference.com参考站点,在c ++ 14中不推荐使用以下方法:
template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );
Run Code Online (Sandbox Code Playgroud)
为什么我们不再能够在不传递第三个参数的情况下调用以下函数?
std::random_shuffle(v.begin(),v.end()); //no longer valid in c++14
Run Code Online (Sandbox Code Playgroud)
看起来好像不同的功能减速具有默认参数设置.这背后的原因是什么?是否添加了某种替代方案?
我正在尝试生成0到59的随机数,并且对C中的rand()函数不满意.这是我正在玩的代码:
#include <stdlib.h>
#include <time.h>
main()
{
int num;
srand(time(NULL));
num = rand();
num = num % 59;
printf("%d\n", num);
}
Run Code Online (Sandbox Code Playgroud)
我已经重复了这段代码的运行,并注意到生成的随机数似乎并不是随机的.生成的数字肯定是遵循一种模式,因为每次运行程序时,数字会逐渐变大,直到它回绕到开头(即2,17,21,29,38,47,54,59,4, 11 ....等).
有没有一种方法可以为函数设定种子,这样每次重新运行函数时,我得到一个真正的随机数,生成的概率为1/60?或者是否有任何替代方法我可以自己实现而不是在C中使用rand()函数?