1

很多时候,当我抽出数字时,我得到 0,而且我总是可以看到类似的抽奖顺序。你知道为什么吗?

例如:losowanie(3) -> 结果 0 有时 1?

代码:

 public int losowanie(int w)
        {
            Random rand = new Random(Guid.NewGuid().GetHashCode());
            int s = w - 1;
            return rand.Next(0, s);
        }

代码:

在此处输入图像描述

4

2 回答 2

1

将您的Random类实例化一次并重用该实例。例如,通过在使用随机序列的类中拥有一个私有静态字段。顺便说一句:我怀疑带有 Guid.NewGuid() 的默认种子会为 Random() 的无参数构造函数提供更好的结果。

public class whatever
{
        static Random rand = new Random(Guid.NewGuid().GetHashCode());
        // or use new Random(); 

        public int losowanie(int w)
        {
            int s = w - 1;
            return rand.Next(0, s);
        }
}
于 2012-12-27T10:53:32.863 回答
1

您看到的行为是正确的 -losowanie(3)调用rand.Next(0, 2),因此只能返回两个值 -01.

您可能误解了Random.Next(minValue, maxValue)参数的含义 - 查看MSDN了解详细信息。

于 2012-12-27T10:55:18.797 回答