如何缩短这些价值检查?

时间:2016-09-17 20:02:58

标签: c#

我正在制作一个根据类型随机生成星星的系统。第一部分当然是告诉系统基于稀有性的星形是什么类型。我很难根据随机数生成器缩短实际的分配部分。这是我目前的解决方案。

void StarTypeGen () {

    randomGen (x: 0, y: 229000);

    if (Rng <= 228000) {
        StarType++;
        if (Rng <= 36000) {
            StarType++;
            if (Rng <= 22500) {
                StarType++;
                if (Rng <= 9000) {
                    StarType++;
                    if (Rng <= 3750) {
                        StarType++;
                        if (Rng <= 1875) {
                            StarType++;
                            if (Rng <= 10) {
                                StarType++;
                            }
                        }
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

使用值预加载数组并循环打破第一个错误条件:

int[] nums = new int[] { 228000, 36000, 22500, 9000, 3750, 1875, 10 };
for (int i = 0; i < nums.Length; i++)
{
   if (Rng > nums[i]) break;
   StarType++;
}