Size: a a a

2021 July 18

MG

Mr. Good in Modern::Perl
похоже на то что нужно:)
источник

AS

Alexey Stavrov in Modern::Perl
Нужно сделать бенчмарк. Мне тут выше объяснили, что я использовал самые неподходящие операции
источник

AS

Alexey Stavrov in Modern::Perl
Кстати, спустя 2053 операции цикл чисел повторится. Если нужно, чтобы не повторялось, то можно выбрать другие породающие (переменная $gen).
Порождающий - это такое число, что минимальная степень в которой он будет равен 1, равно 2053 - 1 = 2052.

В универе какие-то теоремки были, но я уже их все забыл, как их находить.
Можно просто перебор всех порождающих написать.
источник

AS

Alexey Stavrov in Modern::Perl
Я вот так нашёл 1501:
my $MOD = 2053;
for my $i (1500 .. 2052) {
 my $count = 1;
 my $r = $i;
  while ($r != 1) {
     $r = ($r * $i) % $MOD;
     ++$count;
  }
  if ($count >= 2052) { say $i; last; }
}

Т.е. можно last убрать и цикл сделать от 2
источник

MG

Mr. Good in Modern::Perl
учитывая, что придется постоянно искать ещё "порождающие", ест ли смысл вообще что-то такое пробовать, или брать обычный random, и не морочить голову, хз
источник

AS

Alexey Stavrov in Modern::Perl
Почему-то кажется, что все операции в перле будут выполнятся медленно. Я бы бенчмарк написал вначале)

Потом бы думал, подходит ли мне эта скорость.
источник

b

basiliscos in Modern::Perl
если вас не устраивает скорость рандома в перле, я бы сказал, что у вас проблемы с подходом или архитектурой
источник

AP

Anton Petrusevich in Modern::Perl
деление на 2048 - не деление
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
я уже не помню, но для псч надо делить кажется на что-то другое
источник

AS

Alexey Stavrov in Modern::Perl
У меня там простое число, а не степень двойки
источник

R

Roman in Modern::Perl
Переписывали как-то модуль рандомной выборки на XS. С целью совместимости результатов и непереписывания тестов выбрали тот же алгоритм rand48. Разница в генераторе рандома нулевая, выйгрыш только в обработке своих данных. И да, это достаточно быстрый алгоритм.
источник

AS

Alexey Stavrov in Modern::Perl
А вот деление на умножение переделал:
perl -E 'sub fast_mod { my $n = shift; return $n - (($n * 2142253537) >> 42) * 2053; } for $i (2 .. 3_000_000) { if (fast_mod($i) != $i % 2053) { say $i; last; } }'
источник

AP

Anton Petrusevich in Modern::Perl
рандомострадания блин
источник

AS

Alexey Stavrov in Modern::Perl
Ага, но я поупражнялся. Спасибо))
источник

MG

Mr. Good in Modern::Perl
Спасибо вам и от меня:)
источник

a

allter in Modern::Perl
Ну, во-первых шелл-то тоже ограниченный + есть еще меры. Ну и цель то в том, что бы взломать систему было не так тривиально (хотя бы что бы минут 10 надо было повозиться в условиях, когда все логгируется и мониторится). КМК с докером, настроенным без каких-то хитростей, неавторизованный доступ к памяти производится за десяток секунд.
источник

VK

Vyacheslav Koval in Modern::Perl
можно, например, сделать deprecated фичи, которые тормозят, и редко используются

Ведь по факту в языке используется некоторое его подмножетсво, возможно легаси и не используется
источник
2021 July 19

VO

Vyacheslav Olkhovche... in Modern::Perl
а всякие use strict; получаются локальные для модуля? т.е. если в модуле use strict нет то никогад и никак стрикта там не будет?
источник

SZ

Sergey Zhmylove in Modern::Perl
Да
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
а всякие require? а если package в файле нет?
источник