首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中使用rand函数输出?

如何在C++中使用rand函数输出?
EN

Stack Overflow用户
提问于 2022-09-04 11:17:37
回答 2查看 107关注 0票数 1

我试图创建一个老虎机,在这里我必须从2-7生成3个随机数,然后使用这个输出来给出不同的结果。例如,如果输出是777,然后你的赌注被乘以10,如果它是222,那么它被乘以5。我似乎不能把rand函数的输出放入一个变量中去使用它,并且它没有正确地计算。

代码:

这不是完整的代码

代码语言:javascript
复制
if (bet <= 2000)
    {
        std::cout << endl;

        int game_num = 0;
        srand (0);
        for (int i = 0; i < 3; i++)
        std::cout << (rand() % 1) + 2;
        std::cout << endl;

        if (game_num == 777)
        {
            bet = bet * 10;
            std::cout << "You Won: " << bet << endl;
            return 0;
        }

        else if (game_num == 222 || 333 || 444 || 555 || 666)
        {
            bet = bet * 5;
            std::cout << "You Won: " << bet << endl;
            return 0;
        }
EN

回答 2

Stack Overflow用户

发布于 2022-09-04 11:22:06

问题是,在这种情况下,没有正确地播种随机数生成器。

每次程序运行时,这都会返回相同的随机数序列。

代码语言:javascript
复制
srand(0)

每次运行程序时,您都希望为随机数生成器添加一个新值。

在运行时使用时间戳将启用该行为。

代码语言:javascript
复制
srand(time(0))
票数 3
EN

Stack Overflow用户

发布于 2022-09-04 11:30:51

丹的答案是正确的,你每次都使用相同的种子,所以每一个数字序列都是相同的。你需要一个随机值的种子。从随机性的角度来说,时间不是很好,但除非你在同一秒钟内运行两次(因为time()只计算秒和秒),否则它是有效的。渴望现代计算机,不像1970年代发明这种播种方式的计算机)。

所以,老实说,不要使用srandrand 来代替。首先,它们是糟糕的随机数生成器,它们对“隐藏”状态的依赖使它们成为了一场噩梦。很简单。无视他们的存在!

C++带来了自己的随机设施:

您想要一个统一的整数分布,所以使用uniform_int_distribution。从实际随机生成事件中获得一个实际随机值的种子。

代码语言:javascript
复制
#include <random>

// … 
// Somewhen before you need the random numbers, not every time:

    // Will be used to obtain a seed for the random number engine
    std::random_device real_random;  
    // Set up the generator for random bits, seed it from the actual random 
    std::mt19937 gen(real_random());
    // Use that to generate random numbers in [2,7]
    std::uniform_int_distribution<> distrib(2, 7);

// Where you need the randomness:
    for (int i = 0; i < 3; i++)
        std::cout << distrib(gen) << "\n";
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73598901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档