我正在开展个人项目,为D& D等桌面角色扮演游戏开发统计数据。我需要生成的数字符合以下条件:
例如,如果 d = 20 且 n = 6 ,则总和应 S = 63 且随机数应为在1到20之间。这意味着[10,11,10,11,10,11]的平均输出
生成具有常数总和的数字的问题涵盖in this post,并且我非常熟悉在一定范围内生成数字,但我想知道是否有一个简单的算法可以确保两者都有符合这些标准。
答案 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++;
}
}