2010-12-07 2 views
0

У меня есть класс для улиток.C#, странные вещи с Random.Next

class snails 
{ 
    Random speedRand = new Random(); 
    public int SnaleOffset = 9; 
    int speed; 
    public void snailChangeSpeed() { this.speed = speedRand.Next(3)+1; } 
    public void snailGo() { this.SnaleOffset = this.SnaleOffset + this.speed; } 
} 

Я создал 4 объектов улиток, которые, как предполагается, чтобы изменить их скорость движения, когда таймер timerSnailSpeed ​​клещей ...

 private void timerSnailSpeed_Tick(object sender, EventArgs e) 
    { 
     Snail1.snailChangeSpeed(); 
     Snail2.snailChangeSpeed(); 
     Snail3.snailChangeSpeed(); 
     Snail4.snailChangeSpeed(); 

    private void timerSnailMove_Tick(object sender, EventArgs e) 
    { 
     Snail1.snailGo(); 
     Snail2.snailGo(); 
     Snail3.snailGo(); 
     Snail4.snailGo(); 
     imgSnail1.Left = Snail1.SnaleOffset; 
     imgSnail2.Left = Snail2.SnaleOffset; 
     imgSnail3.Left = Snail3.SnaleOffset; 
     imgSnail4.Left = Snail4.SnaleOffset; 
    } 

Однако проблема заключается в том, что их скорость не изменяется случайным образом для каждого уличный объект, а не для всех вместе. Есть идеи?

Спасибо!

+1

Как вы строите экземпляры Snail1 через Snail4? – dthorpe 2010-12-07 18:01:17

+0

улитки Snail1; улитки Snail2; улитки Snail3; улитки Snail4; – Rob 2010-12-07 18:02:47

ответ

5

Вы создаете четыре экземпляра Random, и поскольку начальное значение по умолчанию основано на времени, они, скорее всего, будут производить одну и ту же последовательность случайных чисел. Пусть экземпляры snails используют один и тот же экземпляр Random, чтобы избежать этого.

Смежные вопросы