好的,我正在使用int indexSelector = RandomNumber(1, 14);
创建一个随机数并从数组中提取匹配的索引。但它似乎只调用3或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));
这可确保您创建一个真正随机的数字序列。如果您不发送种子,系统将使用依赖于时间的种子,如果您在彼此之后立即创建它们,它们将是相同的。