C# 我试图做一个做,而循环随机数发生器的D&D,但我的代码不工作

C# 我试图做一个做,而循环随机数发生器的D&D,但我的代码不工作,c#,random,C#,Random,我想我可以尝试对六个独立的随机数生成器执行do-while循环,生成六个D&D属性分数,总分数正好为78。程序没有按预期执行,几乎总是显示一个空白屏幕。有时它确实有用,但太少了,没有用处。是否可以以不同的方式重新格式化以产生更一致的结果 尝试重新安排代码,创建不同的静态空白,但似乎没有任何改进或帮助问题 do { total = 78; strength = rng.Next(8, 19);

我想我可以尝试对六个独立的随机数生成器执行do-while循环,生成六个D&D属性分数,总分数正好为78。程序没有按预期执行,几乎总是显示一个空白屏幕。有时它确实有用,但太少了,没有用处。是否可以以不同的方式重新格式化以产生更一致的结果

尝试重新安排代码,创建不同的静态空白,但似乎没有任何改进或帮助问题

        do
        {
            total = 78;

            strength = rng.Next(8, 19);
            strmod = (strength - 10) / 2;
            total = total - strength;

            dexterity = rng.Next(8, 19);
            dexmod = (dexterity - 10) / 2;
            total = total - dexterity;

            constitution = rng.Next(8, 19);
            conmod = (constitution - 10) / 2;
            total = total - constitution;

            intelligence = rng.Next(8, 19);
            intmod = (intelligence - 10) / 2;
            total = total - intelligence;

            wisdom = rng.Next(8, 19);
            wismod = (wisdom - 10) / 2;
            total = total - wisdom;

            charisma = rng.Next(8, 19);
            chamod = (charisma - 10) / 2;
            total = total - charisma;
        }
        while (total > 0 && total < 0);

        if (total == 0)
        {
            Console.WriteLine("These are your attribute scores and modifiers:");
这应该运行每个int,进行计算,并得出一个完整的答案。总答案的结果应该决定是使用不同的随机数再次运行代码,还是转到if部分


大多数时候,我只是得到一个空白屏幕。

我想你要做的是循环直到变量total收敛到零。
当您使用&&时,这意味着这两个条件必须同时有效,但在这种情况下,从逻辑上讲,数字不可能同时大于零和小于零。如果希望它在total==0为真时适用于正数和负数,但不适用于零,则应使用循环退出,或者类似于| | not and&。

这里有多个问题:

首先,这不是你产生分数的方式。这会给出一个线性范围而不是钟形曲线,这样会得到太多的极端分数

其次,循环终止是错误的。当你显然是指| |时,你使用了&。总的来说会更好!=不过是0

第三,由于这种错误的终止,循环总是在您到达分数转储程序后立即运行,无论它们是否正确,但分数转储程序由total==0条件保护,如果生成器循环在第一次尝试时没有正确执行,则不会打印任何内容

do
{
    .
    .
    .
} 
while (total != 0)

Console.WriteLine(total);

如果循环退出,那么total必须为零,因此您不需要If。

您在这里试图做什么:while total>0&&total<0;?此do while循环只运行一次。总计不能同时大于或小于0,因此while语句中的条件始终为false。您的条件应为while Total>0多条注释未命中循环条件真正想要的内容while Total!=0