c#中的随机数生成器

时间:2012-08-16 09:54:11

标签: c#

我需要两个函数。一个会产生随机偶数,第二个会生成随机奇数。在c#中是否有任何内置函数?

由于

3 个答案:

答案 0 :(得分:9)

如果您对分发没有任何特殊要求,可以使用常规随机C#函数:

Random rnd = new Random();
            rnd.Next(int.MaxValue/2)*2; // an even integer
            rnd.Next(int.MaxValue/2)*2+1; // an odd integer

注意 您可能会相应地调整最小/最大范围以避免溢出并保持在您的范围内。

答案 1 :(得分:2)

你可以这样做:

private static int RandomNumberEven(int min, int max)
        {
            Random random = new Random();
            int ans = random.Next(min, max);
            if (ans % 2 == 0) return ans;
            else
            {
                if (ans + 1 <= max)
                    return ans + 1;
                else if (ans - 1 >= min)
                    return ans - 1;
                else return 0;
            }
        }

private static int RandomNumberOdd(int min, int max)
        {
            Random random = new Random();
            int ans = random.Next(min, max);
            if (ans % 2 == 1) return ans;
            else
            {
                if (ans + 1 <= max)
                    return ans + 1;
                else if (ans - 1 >= min)
                    return ans - 1;
                else return 0;
            }
        }

答案 2 :(得分:0)

使用此

(我假设您需要10个奇数和10个偶数)

Random r = new Random();

List<int> even = new List<int>();
List<int> odd = new List<int>();

while(even.Count < 10 || odd.Count < 10)
{
    int i = r.Next();
    if(i % 2 == 0)
    {
        if(!even.Contains(i) && even.Count < 10)
            even.Add(i);
    }
    else
    {
        if(!odd.Contains(i) && odd.Count < 10)
            odd.Add(i);
    }
}