静态随机成员每次仍然输出相同的数字



我有一个静态随机成员,当我使用rand.next(1,2)时,我总是得到1。我不明白为什么。

    static Random rand = new Random();
    private static void Attack(Player player, Monster monster)
    {
        var pDamage = Convert.ToInt32(Math.Floor(player.Weapon.Attack * monster.Armor.DamageRedux));
        Console.WriteLine("You strike the {0} for {1} damage.", monster.MonsterName, pDamage);
        monster.Health -= pDamage;
        for (int i = 0; i < 10; i++)
        {
            var hitRoll = rand.Next(1, 2);
            Console.Write("{0}", hitRoll);
        }
        switch (1)
        {
            case 1:
                var mDamage = Convert.ToInt32(Math.Floor(monster.Weapon.Attack * player.Armor.DamageRedux));
                Console.WriteLine("The {0} swing back and hits you for {1} damage.", monster.MonsterName, mDamage);
                player.Health -= mDamage;
                break;
            case 2:
                Console.WriteLine("The {0} swings wildly at you and misses.", monster.MonsterName);
                break;
        }
    }

包含最小值时不包含最大值。视觉:

minValue ●—— value ——○ maxValue

或作为表达式

minValue <= value && value < maxValue

以下是Next的文档:https://msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.110).aspx

您应该更改发送给Next()方法的值:

var hitRoll = rand.Next(1, 3); // Generates a value between 1 and 2

最新更新