如何从某个随机值范围中删除某个元素?

问题描述 投票:0回答:1

我正在尝试为多个团队随机生成一个双重循环时间表,以团队为线,以回合为列。每支球队被安排与其他球队对决两次,一次为主场比赛的对手分配正值,一次为一次比赛的负值分配。

[效果将是这样,除了它应在2D数组而不是1D数组上起作用,其中某些“ K”和“ -K”从元素(team,round)的可能随机值中减去2D阵列。

K是确保团队不匹配的#行(例如,在分配第2行时使k = +-2在“ dist {}”中的权重= 0,因此“ 2”和“ -2”将不会作为第2队为自己(在家或客场)分配的对手)

是否有一项功能可以让每条线(团队)的随机数减少k?还是可以用srand()做?

#include <functional>
#include <iostream>
#include <ostream>
#include <random>

int main()
{
std::random_device rd;

unsigned long seed = rd();
std::cout << "seed " << seed << std::endl;

std::mt19937 engine(seed);

// Distribution  {0, 1, 2, 4, 5}
std::discrete_distribution<> dist {{1, 1, 1, 0, 1, 1}};  // 3 given 0 weight(chance).
auto rng = std::bind(dist, std::ref(engine));

const int n = 10;
for (int i = 0; i != n; ++i)
{
    int x = rng();
    std::cout << x << std::endl;
}

return 0;
}

我正在尝试为多个团队随机生成一个双重循环时间表,以团队为线,以回合为列。每个团队被安排与其他团队进行两次对抗,一旦分配完毕...

c++
1个回答
0
投票

我想你想要这个

© www.soinside.com 2019 - 2024. All rights reserved.