Почему эти случайные события следуют определенной схеме? - PullRequest
0 голосов
/ 15 октября 2018

Я создал макет сетки.Отображает 100 шаров.Изначально все шары будут в случайном положении.Каждые 25 мс шарик будет перемещать какую-либо единицу (это характерно для всех шариков) в произвольном направлении.Вы можете увидеть это в действии на изображении ниже:

Sample output in GIF

Даже если направление шаров является случайным, через некоторое время все шары движутся в направлениинижний правый угол.Такое поведение повторяется каждый раз.Вы можете увидеть это на изображении ниже:

Sample 1

Sample 2

  • Почемуэти случайные события следуют определенному шаблону?
  • Являются ли случайные числа действительно случайными?
  • Есть ли проблема с генератором случайных чисел в C #?
  • Есть ли какое-либо математическое объяснение?для этого?

Код C #

Random random = new Random();
var direction = random.NextDouble() * 360;
var ballTranslate = child.RenderTransform.TransformPoint(new Point(0, 0));
var x = ballTranslate.X;
var y = ballTranslate.Y;
var x1 = x + (parm.Speed * Math.Cos(direction));
while (x1 < 0 || x1 > (parm.CellSize * parm.NoOfSplit))
{
    direction = random.NextDouble() * 360;
    x1 = x + (parm.Speed * Math.Cos(direction));
}

var y1 = y + (parm.Speed * Math.Sin(direction));
while (y1 < 0 || y1 > (parm.CellSize * parm.NoOfSplit))
{
    direction = random.NextDouble() * 360;
    y1 = y + (parm.Speed * Math.Sin(direction));
}

TranslateTransform myTranslate = new TranslateTransform();
myTranslate.X = x1;
myTranslate.Y = y1;
child.RenderTransform = myTranslate;

Полный код

https://github.com/Vijay-Nirmal/ProjectChaos

1 Ответ

0 голосов
/ 15 октября 2018

Вы, кажется, генерируете направление в градусах и передаете его в Math.Sin, который принимает угол в радианах.360 / 2PI = 57,3 (приблизительно), поэтому вы с большей вероятностью выберете угол между 0 и 0,3 радианами, чем другие, большие углы.

Когда у вас так много итераций, также возможно, что естьмаленькая ошибка округления где-то

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...