public static IRnd <B> Select <A, B>(this IRnd <A> source, Func <A, B> func) { return(new FromFunc <B>(tries => from a in source.Next(tries) select func(a) )); }
public Neuron(IRnd rand, long index) { //Index = index; Output = new List <NRelation>(); State = rand.Next(NNet.MIN_INIT_STATE, NNet.MAX_INIT_STATE); SpikePeriod = rand.Next(NNet.MIN_SPIKE_PERIOD, NNet.MAX_SPIKE_PERIOD); }
public static IEnumerable <PaymentDTO> CreatePayments(AccountDTO[] accounts, PaymentStatus status, IRnd <string> recipientRnd, IRnd <int> countRnd, IRnd <float> amountRnd, IRnd <DateTime> startDateRnd, Func <DateTime> datetimeNow, IRnd <TimeSpan> intervalRnd, TitleRnd titleRnd) { foreach (var account in accounts) { var count = countRnd.Next(); for (int i = 0; i < count; i++) { var interval = intervalRnd.Next(); var startTimestamp = startDateRnd.Next(); var repayDiff = (int)((datetimeNow() - startTimestamp) / interval); var lastRepayTimestamp = startTimestamp + repayDiff * interval; yield return(new PaymentDTO { Id = Guid.NewGuid().ToString(), Name = titleRnd.Next(5), AccountId = account.Id, Amount = amountRnd.Next(), StartTimestamp = startTimestamp, LatestProcessingTimestamp = lastRepayTimestamp, Interval = interval, Status = (int)status, Recipient = recipientRnd.Next(account.Id) }); } } }
public static IRnd <C> SelectMany <A, B, C>(this IRnd <A> source, Func <A, IRnd <B> > func, Func <A, B, C> selector) { return(new FromFunc <C>(tries => { return from a in source.Next(tries) from b in func(a).Next(tries) select selector(a, b); })); }
private static float GetAmount(AccountDTO[] accounts, IRnd <float> rnd) { while (true) { var amount = (float)Math.Round(rnd.Next(), 2); if (accounts.Any(a => a.Balance > amount)) { return(amount); } } }
public static IEnumerable <CardDTO> CreateCards(AccountDTO[] accounts, IRnd <int> countRnd) { foreach (var account in accounts) { var count = countRnd.Next(); for (int i = 0; i < count; i++) { yield return new CardDTO { Id = Guid.NewGuid().ToString(), AccountId = account.Id, Number = CreateCardNumber() } } ; } }
// пустой конструктор для сериалиции //public NNet() { } public NNet(ILogger <NNet> logger, IOptions <NNetConfig> optionsAccessor, IRnd rand) { Neuron.Net = this; // тестируем сериализацию в лонг LongTest = 100123123123; // > 100 000 000 000 _logger = logger; _optionsAccessor = optionsAccessor; _filename = _optionsAccessor.Value.FileName.TrimEnd(new char[] { '/', ' ' }); LenX = _optionsAccessor.Value.LenX; LenY = _optionsAccessor.Value.LenY; LenZ = _optionsAccessor.Value.LenZ; _rand = rand; if (LenZ < 3) { LenZ = 3; // 3 слоя минимум 1 входной последний выход } _logger.LogInformation(1111, "NNet constructor {FileName} {MaxX} {MaxY} {MaxZ}", _filename, LenX, LenY, LenZ); if (string.IsNullOrWhiteSpace(_filename)) { _filename = "test.murin"; } Stop(); // инициализируем очередь задач Queue = new ConcurrentQueue <QueueNeuron>(); if (System.IO.Directory.Exists(_filename) || System.IO.File.Exists(_filename + ".zip")) { load(); } else { randomize(); _setRelations(); save(); } //_initStatWeight(); //_setOutputNeurons(); //startThreads(); Start(); }
public static IEnumerable <AccountDTO> CreateAccounts(UserDTO[] users, IRnd <int> countRnd, IRnd <float> balanceRnd) { foreach (var user in users) { var count = countRnd.Next(); for (int j = 0; j <= count; j++) { //var b = random.Next(balance.Min, balance.Max) + GetCents; var balance = balanceRnd.Next(); yield return(new AccountDTO { Id = Guid.NewGuid().ToString(), Balance = balance, Number = CreateAccountNumber(), UserId = user.Id }); } } }
public static IRnd <A> Where <A>(this IRnd <A> source, Func <A, bool> predicate) { return(new FromFunc <A>(tries => { for (int i = 0; i < tries; i++) { var ra = source.Next(1); if (!ra.WasSuccessful) { continue; } var a = ra.Result; if (predicate(a)) { return ra; } } return new RndResult <A>(); })); }
static PaymentDTO[] ActivePayments(AccountDTO[] accounts, IRnd <string> recipientRnd, IRnd <DateTime> timestampRnd) { var titleRnd = (TitleRnd) new RndBuilder <string>(new TitleRnd()).Build(); var countRnd = new RndBuilder <int>() .DistributionValues(new[] { 0, 1, 2 }) .DistributionProbabilities(new[] { 50, 40, 10 }) .Build(); var amountRnd = new RndBuilder <float>(new CurrencyRnd()).Min(20).Max(20000) .DistributionValues(new float[] { 500, 1000, 3000, 8000, 15000 }) .DistributionProbabilities(new[] { 30, 20, 30, 10, 7, 3 }) .Build(); //dystrybuanta var startDateRnd = timestampRnd; var intervalRnd = new RndBuilder <TimeSpan>() .DistributionValues(new[] { TimeSpan.FromDays(30), TimeSpan.FromDays(90), TimeSpan.FromDays(180), TimeSpan.FromDays(365), }) .DistributionProbabilities(new[] { 75, 10, 10, 5 }) .Build(); return(ValuesGenerator.CreatePayments(accounts, PaymentStatus.ACTIVE, recipientRnd, countRnd, amountRnd, startDateRnd, () => DateTime.UtcNow, intervalRnd, titleRnd).ToArray()); }
public static A Single <A>(this IRnd <A> rnd) { return(rnd.Next(Sx.NumberTries).Result); }
public XORShiftRandom(IRnd lcg_rnd) : this(lcg_rnd.NextUInt(), lcg_rnd.NextUInt(), lcg_rnd.NextUInt(), lcg_rnd.NextUInt()) { }
public static IRnd <B> SelectMany <A, B>(this IRnd <A> source, Func <A, IRnd <B> > func) { return(source.SelectMany(func, (_, b) => b)); }
public static bool NextBool(this IRnd rnd) { return(rnd.NextBoolInt() == 1); }
public static IEnumerable <TransactionDTO> CreateTransactions(AccountDTO[] accounts, IRnd <string> recipientRnd, IRnd <int> countRnd, IRnd <DateTime> timestampRnd, IRnd <float> amountRnd, IRnd <string> titleRnd) { foreach (var account in accounts) { int count = countRnd.Next(); for (int i = 0; i < count; i++) { var debit = random.Next(0, 1) == 1; var sender = debit ? account.Id : recipientRnd.Next(account.Id); var recipient = !debit?recipientRnd.Next(account.Id) : account.Id; yield return(new TransactionDTO { Id = Guid.NewGuid().ToString(), Amount = amountRnd.Next(), Sender = sender, Timestamp = timestampRnd.Next(), Recipient = recipient, Title = titleRnd.Next() }); } } }
public FastMonster(WorldMatrix worldMatrix, IRnd rnd) : base(worldMatrix, rnd) { }
public static IEnumerable <(LoanDTO, PaymentDTO)> CreateLoans(AccountDTO[] loansAccounts, IRnd <int> countRnd, IRnd <float> totalRnd, LoanInstalmentsRnd instalmentsRnd, Rnd <int> paidInstalmentsRnd, IRnd <TimeSpan> intervalRnd, Func <DateTime> datetimeNow, IRnd <string> recipientRnd) { foreach (var account in loansAccounts) { var count = countRnd.Next(); for (int i = 0; i < count; i++) { var totalAmount = totalRnd.Next(); var instalments = instalmentsRnd.Next(totalAmount); paidInstalmentsRnd.Max = instalments; var paidInstalments = paidInstalmentsRnd.Next(); var paidAmount = (float)paidInstalments / instalments * totalAmount; var loan = new LoanDTO { Id = Guid.NewGuid().ToString(), Instalments = instalments, TotalAmount = totalAmount, PaidAmount = paidAmount, AccountId = account.Id }; var interval = intervalRnd.Next(); var start = datetimeNow() - interval * paidInstalments; var recipient = recipientRnd.Next(account.Id); var lastRepayTimestamp = start + interval * paidInstalments; var payment = new PaymentDTO { Id = Guid.NewGuid().ToString(), Name = $"Loan {loan.Id} payment", AccountId = account.Id, Amount = totalAmount / instalments, Interval = interval, StartTimestamp = start, LatestProcessingTimestamp = lastRepayTimestamp, Status = (int)PaymentStatus.ACTIVE, Recipient = recipient }; loan.PaymentId = payment.Id; yield return(loan, payment); } } }
public static float NextFloat(this IRnd rnd, float a, float b) { return(a + rnd.NextFloat() * (b - a)); }
public static IRnd <IEnumerable <A> > Take <A>(this IRnd <A> rnd, int count) { return(Enumerable.Range(0, count).Select(_ => rnd).Sequence()); }
public NNetServer(ILogger <NNet> logger, IOptions <NNetConfig> optionsAccessor, IRnd rand) : base(logger, optionsAccessor, rand) { }
public Gauss(IRnd rnd) : this(rnd, 0.0, 1.0) { }
public Gauss(IRnd rnd, double mean, double dev) { _rnd = rnd; _mean = mean; _dev = dev; }
public Monster1x1(IWorldMatrix worldMatrix, IRnd rnd) : base(worldMatrix, rnd) { }
public static A Single <A>(this IRnd <A> rnd, int tries) { return(rnd.Next(tries).Result); }
public static double NextDouble(this IRnd rnd, int a, int b) { return(a + rnd.NextDouble() * (b - a)); }
private static RndResult <IEnumerable <A> > NoRepeat <A>(int count, int tries, IRnd <A> rnd) where A : IEquatable <A> { A last = default(A); A[] arr = new A[count]; for (int i = 0; i < count; i++) { var res = i == 0 ? rnd.Next(tries) : rnd.Where(a => !a.Equals(last)).Next(tries); if (!res.WasSuccessful) { return(new RndResult <IEnumerable <A> >()); } last = res.Result; arr[i] = last; } return(new RndResult <IEnumerable <A> >(arr)); }
public static IEnumerable <TransactionDTO> CreateTransactions(CardDTO[] cards, IRnd <string> recipientRnd, IRnd <int> countRnd, IRnd <DateTime> timestampRnd, IRnd <float> amountRnd) { foreach (var card in cards) { int count = countRnd.Next(); for (int i = 0; i < count; i++) { var timestamp = timestampRnd.Next(); var amount = amountRnd.Next(); yield return(new TransactionDTO { Id = Guid.NewGuid().ToString(), Amount = amount, CardId = card.Id, Sender = card.AccountId, Timestamp = timestamp, Recipient = recipientRnd.Next(card.AccountId), Title = $"{timestamp} card usage for a transfer worth {amount} EUR." }); } } }
public static int Next(this IRnd rnd, int a, int b) { return(a + (int)((b - a) * rnd.NextDouble())); }
public static IRnd <IEnumerable <A> > Take <A>(this IRnd <int> count, IRnd <A> rnd) { return(count.SelectMany(i => rnd.Take(i))); }
public static int NextBoolInt(this IRnd rnd) { // x & 1 <=> x % 2 return((int)(rnd.NextUInt() & 1)); }
public static IRnd <IEnumerable <A> > TakeNoRepeat <A>(this int count, IRnd <A> rnd) where A : IEquatable <A> { return(new FromFunc <IEnumerable <A> >(tries => NoRepeat(count, tries, rnd))); }
public static IRnd <IEnumerable <A> > TakeNoRepeat <A>(this IRnd <int> count, IRnd <A> rnd) where A : IEquatable <A> { return(count.SelectMany(i => i.TakeNoRepeat(rnd))); }
public LargeMonster(WorldMatrix worldMatrix, IRnd rnd) : base(worldMatrix, rnd) { }
public Monster(IWorldMatrix worldMatrix, IRnd randomizer) { _randomizer = randomizer; _worldMatrix = worldMatrix; }