我正在尝试为多个团队随机生成一个双重循环时间表,以团队为线,以回合为列。每支球队被安排与其他球队对决两次,一次为主场比赛的对手分配正值,一次为一次比赛的负值分配。
[效果将是这样,除了它应在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;
}
我正在尝试为多个团队随机生成一个双重循环时间表,以团队为线,以回合为列。每个团队被安排与其他团队进行两次对抗,一旦分配完毕...
我想你想要这个