小编use*_*072的帖子

在OS X Mavericks/XCode 5.1上打破了rand()?(或者,"这是一个巨大的安全漏洞,还是我只是一个糟糕的程序员?")

下面的代码片段随机混乱了一个整数的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)

c++ random macos xcode

3
推荐指数
1
解决办法
1136
查看次数

标签 统计

c++ ×1

macos ×1

random ×1

xcode ×1