随机RPG统计生成

时间:2018-03-08 21:07:24

标签: c++ random

我正在开展个人项目,为D& D等桌面角色扮演游戏开发统计数据。我需要生成的数字符合以下条件:

  • 数字必须在1和 d 之内(模具的大小)。
  • n 随机数之和必须始终为(d + 1)n \ 2

例如,如果 d = 20 n = 6 ,则总和应 S = 63 且随机数应为在1到20之间。这意味着[10,11,10,11,10,11]的平均输出

生成具有常数总和的数字的问题涵盖in this post,并且我非常熟悉在一定范围内生成数字,但我想知道是否有一个简单的算法可以确保两者都有符合这些标准。

1 个答案:

答案 0 :(得分:0)

我将提供伪代码,由于在工作职责中从C ++切换到JS,我非常生疏。

这里的想法是我们在每个统计数据中随机分配各个点。

d = 20;
n = 6;
stats = [1, 1, 1, 1, 1, 1];

sum = (d+1)n\2 - n;

int i = 0;
while(i < sum)
{
    // Assuming rand(0,5) produces integer values in range [0..5]
    r = rand(0,5);
    if(stats[r] < 20)
    {
        stats[r]++;
        i++;
    }
}