c++ - Visual C++ 中的随机函数不是随机的

标签 c++ visual-c++ visual-studio-2012

我在 Mac 上有这个 dieRole 函数,但是当我将它移动到 Visual C++ 2012 时,结果每次都是 6

int dieRoll() // return a number between 1 and 6
{
    static int maxRange = RAND_MAX / 6 * 6; 

    int result;
    do
    {
        result = rand();
    }
    while(result > maxRange);    
    return result % 6 + 1;       
}

最佳答案

考虑调用 srand()。您可以使用时间或进程 ID 提供不同的种子。请记住,这是伪随机性,不一定是您认为的“随机”。

int main()
{
    srand(time(NULL));

    std::cout << dieRoll() << std::endl;
}

尝试上面的代码大约每秒都会产生不同的结果。 :-)

关于c++ - Visual C++ 中的随机函数不是随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885917/

相关文章:

c++ - 无法使用 opengl 和 sfml 在我的立方体上应用纹理

c++ - 调试 libpng-1.2.46-2 Fedora Core 16 -- .PNG 前 8 位未通过 libpng

c++ - Visual C++ 中的 _32_ 和 _64_ 等价物

visual-studio - Visual Studio 2012 命令窗口不支持 "xsd"命令吗?

wpf - XAML 中 namespace 错误中不存在该名称

c++ - 为什么 std::optional<boost::variant<A, bool>> 没有从 `std::optional<A>` 成功构造?

c++ - 如何在 C++ 中使用类模板声明新运算符

c++ - 编译器忽略的函数模板特化

c++ - 关于 VC++ 和 Sun Studio 中字段初始化顺序、符号比较和未使用变量的警告

c# - 新的 ScriptBundle .Include 不适用于 Breeze.min.js