相关疑难解决方法(0)

如何生成一个不产生超过X个连续元素的随机数序列

好吧,我真的不知道如何正确地解决这个问题,因为我几乎不知道如何用一句话描述我想要的东西而且我道歉.

让我直截了当地说你可以跳过剩下的原因我只是想表明我已经尝试了一些东西而不是来这里随心所欲地提问.

我需要一个产生6个随机数的算法,在该序列中它不会产生超过2个连续数.

例如:3 3 4 4 2 1

^罚款.

例如:3 3 3 4 4 2

^ NO!没有!错误!

显然,我不知道如何在不经常绊倒自己的情况下如何做到这一点.

是否有可以执行此操作的STL或Boost功能?或者也许这里有人知道如何为它编制算法.那将是真棒.

我正在尝试做什么以及我尝试过什么.(你可以跳过的部分)

这是用C++编写的.我正试图制作一个Panel de Pon/Tetris攻击/益智联盟,无论如何克隆练习.游戏有一个6块的行,3个或更多的匹配块会破坏块.这是一段你不熟悉的视频.

当一个新行来自底部时,它不能与3个水平匹配块一起出现,否则它将自动消失.我不想横向的东西.虽然垂直很好.

我试图完成这一点,看来我做不到.当我开始游戏时,块的块丢失了,因为它不应该检测到匹配.正如你所看到的,我的方法很可能很重,而且太复杂了.

enum BlockType {EMPTY, STAR, UP_TRIANGLE, DOWN_TRIANGLE, CIRCLE, HEART, DIAMOND};
vector<Block> BlockField::ConstructRow()
{
    vector<Block> row;

    int type = (rand() % 6)+1;

    for (int i=0;i<6;i++)
    {
        row.push_back(Block(type));
        type = (rand() % 6) +1;
    }

    // must be in order from last to first of the enumeration
    RowCheck(row, diamond_match);
    RowCheck(row, heart_match);
    RowCheck(row, circle_match); …
Run Code Online (Sandbox Code Playgroud)

c++ random boost stl

6
推荐指数
3
解决办法
1525
查看次数

标签 统计

boost ×1

c++ ×1

random ×1

stl ×1