C#随机数

时间:2010-09-12 19:24:17

标签: c#

好的,我正在使用int indexSelector = RandomNumber(1, 14);创建一个随机数并从数组中提取匹配的索引。但它似乎只调用3或4个数字。就像拔出的物品非常相似。

怎么回事?

4 个答案:

答案 0 :(得分:9)

听起来你正在调用一个函数,它在每次调用时重新创建一个Random对象。 不要在每个函数调用上重新创建Random对象。

所以做这样的事情:

private Random random = new Random();
public int RandomNumber(int min, int max)
{
  return random.Next(min, max); 
}

答案 1 :(得分:2)

使你的随机变量静态:

static Random random = new Random();

答案 2 :(得分:0)

根据Brian的建议,在不会重新创建的地方定义您的Random对象:

Random r = new Random();

并使用此来获取数字:

int indexSelector = r.Next(1, 14);

答案 3 :(得分:0)

Random如果由相同的种子提供,则始终返回相同的数字序列。我建议你使用种子初始化你的随机:

            Random r = new Random(Environment.TickCount);

甚至更好:

            Random r2 = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0));

这可确保您创建一个真正随机的数字序列。如果您不发送种子,系统将使用依赖于时间的种子,如果您在彼此之后立即创建它们,它们将是相同的。