Помощь новичкам

Верно, так оно и происзодит. Но не надо смешивать в кучу обсуждение своих предложений и то. что разработчики сами внедрили. На простом языке это называется “охаивать”.

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

Изменить - да. И я, в частности, это делал, причем именно в публичном обсуждении. Доказывал свою точку зрения в дискуссии. Удалить - иное дело. Если я вижу, что имеет место дублирование - пишу в личку. Мало ли, какие у разработчиков мотивы были? А если дублирования нет - с чего вдруг предлагать что-то удалить? Оно что, мешает? Ну есть и есть, это их проект.

Удаление чего-либо также затрудняет вопрос обратной совместимости.

Ну вот Вы и сами написали причину, по которой не надо говорить об удалении.

Кроме того, проект бесплатный, для разработчиков это еще и научная работа. Может им нужно было проверить возможность реализации чего-либо и потом написать на этом статью научную - вот и включили какую-то возможность. И что, надо в открытом доступе домогаться, чтобы они эту причину назвали?

Это одна из причин почему я не предлагаю удалить что-либо из языка. Впрочем, как и Вы.

Только один вопрос: что за лажа? Два зеркальных кода на PABC.NET и C# работают по-разному.

var Return_V: Boolean;
var V_Val: Single;
var random: Random := new Random(3);
 function GaussRandom(): Single;
    begin
      if (Return_V)
      Then
      begin
        Return_V := false;
        Result := V_Val;
        exit;
      end;
      var u := 2 * random.NextDouble() - 1;
      var v := 2 * random.NextDouble() - 1;
      var r := (u * u) + (v * v);
      if ((r = 0) or (r > 1))
      Then
      begin
        Result := GaussRandom();
        exit;
      end;
      var c := Math.Sqrt(-2 * Math.Log(r) / r);
      V_Val := Single(v * c);
      Return_V := true;
      Result := Single(u * c);
      exit;
    end;
    
 function RandF(a: Single; b: Single): Single;
    begin
      Result := Single(random.NextDouble() * (b - a) + a);
      exit;
    end;
    
 function Randi(a: Single; b: Single): Single;
    begin
      Result := Single(Math.Floor(random.NextDouble() * (b - a) + a));
      exit;
    end;
    
    function Randn(mu: Single; std: Single): Single;
    begin
      Result := mu + GaussRandom() * std;
      exit;
    end;
Begin
Console.WriteLine(Util.Randn(-10, 10));
Console.WriteLine(Util.Randn(-10, 10));
Console.WriteLine(Util.Randn(-10, 10));
End.
using System;

namespace My{

  public static class Program{

    public static bool Return_V { get; set; }
        public static float V_Val { get; set; }

        private static Random random = new Random(3);
        public static float GaussRandom()
        {
            if (Return_V)
            {
                Return_V = false;
                return V_Val;
            }
            var u = 2 * random.NextDouble() - 1;
            var v = 2 * random.NextDouble() - 1;
            var r = (u * u) + (v * v);

            if (r == 0 || r > 1) return GaussRandom();
            var c = Math.Sqrt(-2 * Math.Log(r) / r);
            V_Val =(float) (v * c);
            Return_V = true;
            return (float)(u * c);
        }

        public static float RandF(float a, float b)
        {

            return (float) random.NextDouble() * (b - a) + a;
        
        }

        public static float Randi(float a, float b)
        {
            return (float) Math.Floor(random.NextDouble() * (b - a) + a); 
        }
        public static float Randn(float mu, float std)
        {
            return mu + GaussRandom() * std;
        }

    public static void Main(){
      Console.WriteLine(Randn(-10, 10));
      Console.WriteLine(Randn(-10, 10));
      Console.WriteLine(Randn(-10, 10));
    }

  }

}

Из - за этого, кстати, не работает ConvNetABC.

В каком смысле по-рaзному? Там жe вижу рандомы

Программа на Паскале даёт сильно неадекватные результаты.

а если single на real заменить?

Можно попробовать, но почему на C# это работает иначе? Коды зеркальные ведь.

Ну, пробуйте. Надо же установить как-то причину.

Да, заработало. Но в чём была проблема?

А, нет, ошибся. Не работает. С Double теперь просто огромное число выводится, без степеней.

А какие числа выводятся?

-8141202720 80 -14374339600 В C# при тех же входных данных, вот эти числа находятся в пределах от -21 до 21.

у меня

-20,8074002626979 0,341588060543909 -6,3959925341402

Вот что это такое? Это - для C#.

var Return_V: Boolean;
    var V_Val: Double;
    var random: Random := new Random(3);
    function GaussRandom(): Double;
    begin
      if (Return_V)
      Then
      begin
        Return_V := false;
        Result := V_Val;
        exit;
      end;
      var u := 2 * random.NextDouble() - 1;
      var v := 2 * random.NextDouble() - 1;
      var r := (u * u) + (v * v);
      if ((r = 0) or (r > 1))
      Then
      begin
        Result := GaussRandom();
        exit;
      end;
      var c := Math.Sqrt(-2 * Math.Log(r) / r);
      V_Val := Double(v * c);
      Return_V := true;
      Result := Double(u * c);
      exit;
    end;
    function Randn(mu: Double; std: Double): Double;
    begin
      Result := mu + GaussRandom() * std;
      exit;
    end;
Begin
{Var a:=new Vol(2, 2, 2);
PrintVol(a);
Var Sigm:=new SigmoidLayer(2, 2, 2);
Var b:=Sigm.&Forward(a, true);
PrintVol(b);}
Console.WriteLine(Randn(-10.0, 10.0));
Console.WriteLine(Randn(-10.0, 10.0));
Console.WriteLine(Randn(-10.0, 10.0));
End.

так не надо сравнивать вещественные числа