C# 随机相似抽取序列

C# 随机相似抽取序列,c#,random,C#,Random,很多时候,当我画数字的时候,我得到了0,而且所有的时间我都能看到类似的画序列。你知道为什么吗 例如: losowanie(3)->结果0乘以1 代码: 代码: 实例化一次类并重用该实例。例如,在使用随机序列的类中有一个私有静态字段。顺便说一句:我怀疑Guid.NewGuid()的默认种子对于Random()的无参数构造函数是否能提供更好的结果 您看到的行为是正确的-losowanie(3)调用rand.Next(0,2)因此只能返回两个值-0或1 您可能误解了随机。下一步(minValue,ma

很多时候,当我画数字的时候,我得到了0,而且所有的时间我都能看到类似的画序列。你知道为什么吗

例如: losowanie(3)->结果0乘以1

代码:

代码:

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


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


您可能误解了随机。下一步(minValue,maxValue)参数-检查详细信息。

实例化一次随机类并重用该实例。@rene:这是一个好建议,但我认为这不是问题所在。我认为OP误解了
Random.Next()
的第二个参数的含义。你可以将
rand
设置为一个静态字段。我不确定这是否适用,因为OP是通过
Guid
而不是仅仅基于系统时间来播种
Random
。@rer-Huh,这很公平。我承认,我只在谷歌上快速搜索了一下
NewGuid
是否会返回重复项。实际上,第二个参数是唯一的上限,所以只能返回0和1…@Rafael JuniorMVCDeveloper:看看@DigeMail我在beginning@Rafael-JuniorMVCDeveloper:它清楚地表明“maxValue:返回的随机数的唯一上界”…在本例中是\n20个从1000到10000的随机整数:->我必须再添加一个数字作为maxValue?与此处rnd类似。下一步(100010001)
 public int losowanie(int w)
        {
            Random rand = new Random(Guid.NewGuid().GetHashCode());
            int s = w - 1;
            return rand.Next(0, s);
        }
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);
        }
}