下面的代码片段随机混乱了一个整数的STL数组 - 它在Ubuntu和Red Hat上都能正常工作.但是,在我的Mac OS X盒子上,阵列每次都会以相同的顺序混洗.代码的第二部分打印随机数生成器的输出,这绝对不是随机的.
我做错了什么,或者在升级我的OS X/XCode套件时做了些什么改变了?无论哪种方式,这是一个安全漏洞吗?...当然,许多可能用于生成随机数的遗留代码可能看起来像这样,并且突然不再是随机的.
思考?
代码(自己试试):
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main()
{
//First, let's initialize, shuffle, and print a random vector.
vector<int> myOrder;
for(int i = 0; i < 10; i++)
myOrder.push_back(i);
uint seed = time(NULL);
std::srand( seed );
std::random_shuffle(myOrder.begin(), myOrder.end());
for(vector<int>::iterator it = myOrder.begin(); it != myOrder.end(); it++)
cout << *it << "\t";
//Let's check the output of the PRNG:
cout << "\nMy seed is: " << …Run Code Online (Sandbox Code Playgroud)