Forwarded from Гепардово гнездо
Может ли человек генерировать случайные числа независимо и равновероятно?
Попробуйте Aaronson Oracle. Его суть проста: надо нажимать случайно на клавиатуре буквы
Если вы набираете буквы равновероятно и независимо, то модель будет угадывать примерно в 50% случаев. Если нет — то ваш паттерн набора, скорее всего, все еще будет случайным, но явно не будет похож на последовательность независимых случайных событий.
Можете считать этот сайт наглядной демнострацией того, что люди не понимают интуитивно, как должна выглядеть последовательность испытаний Бернулли (т.е. бросков монетки, после которых фиксируется, упала ли монета орлом или решкой)
Попробуйте Aaronson Oracle. Его суть проста: надо нажимать случайно на клавиатуре буквы
f
и d
. А далее простая модель (про ее работу можно почитать здесь) будет пытаться предсказывать вашу следующую букву.Если вы набираете буквы равновероятно и независимо, то модель будет угадывать примерно в 50% случаев. Если нет — то ваш паттерн набора, скорее всего, все еще будет случайным, но явно не будет похож на последовательность независимых случайных событий.
Можете считать этот сайт наглядной демнострацией того, что люди не понимают интуитивно, как должна выглядеть последовательность испытаний Бернулли (т.е. бросков монетки, после которых фиксируется, упала ли монета орлом или решкой)
👍5💩1
Я довольно неплохо знаю свою аудиторию, а потому запускаю второй публичный канал, который, я надеюсь, зайдёт бОльшей части моих подписчиков. Присоединяйтесь, репостите.
t.iss.one/only_traps
t.iss.one/only_traps
Telegram
Тpапы
Для поднятия и спуска
😁29👍8💩6🔥5❤3🖕2
То есть когда компилятор делает name mangling — это абсолютно нормально и не вызывает вопросов, но когда я пишу такой код напрямую — это сразу обфускация и грубое нарушение хороших практик?! 😤
😁18🌚3👎2💩1🤡1
Сдавая кровь на анализы в поликлиннике, произвёл небольшой фурор своими ноготочками и получил шоколадку.
😁12❤3👍2❤🔥1💩1
#prog #rust
Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так:
Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так:
// `foo`, `bar` и `baz` взаимно исключают друг другадо версии 1.66
// #[deny(const_err)] для Rust
#[rustfmt::skip]Ошибка не столь ясная, как в случае с
const _USE_ONLY_ONE_OF_FOO_BAR_BAZ: [(); 1] = [
();
0
+ cfg!(foo) as usize
+ cfg!(bar) as usize
+ cfg!(baz) as usize
];
compile_error!
, но этот паттерн тривиально масштабируется на любое количество фичей.doc.rust-lang.org
compile_error in std - Rust
Causes compilation to fail with the given error message when encountered.
👍10🤔3💩1
Блог*
#prog #rust Если вам вдруг потребовалось сделать набор взаимоисключающих фичи, то вместо квадратичного бойлерплейта с перечислением каждой пары фич и использованием compile_error! можно сделать так: // `foo`, `bar` и `baz` взаимно исключают друг друга //…
@tyranron совершенно справедливо добавил, что ошибку можно сделать и более читаемой:
#[deny(const_err)]Но это требует наличия паники в const-контексте, что доступно только с версии 1.57, в то время как вариант с длинной массива работает даже на Rust 1.0.
const _: () = {
let n_activated = cfg!(foo) as usize + cfg!(bar) as usize + cfg!(baz) as usize;
if n_activated != 1 {
panic!("Only one of `foo`, `bar` or `baz` can be used")
}
};
Telegram
Блог*
Тем временем вышел Rust 1.57 (анонс).
tl;dr несколько заинтересовавших меня штук:
— panic!/todo!/assert! макросы в константных контекстах
— кастомные профили компиляции (как dev, release, test и bench, но произвольные)
— try_reserve методы для коллекций…
tl;dr несколько заинтересовавших меня штук:
— panic!/todo!/assert! макросы в константных контекстах
— кастомные профили компиляции (как dev, release, test и bench, но произвольные)
— try_reserve методы для коллекций…
👍4💩1
Forwarded from ozkriff.games 🦀 (ozkriff🇺🇦)
# godbolt.org's LLVM Opt Pipeline View
Not exactly fresh news but it turns out that Compiler Explorer got an amazing feature last year: ability to step through the individual LLVM optimization passes and see what exact effect it has on your code sample. 🤯
Example: https://rust.godbolt.org/z/46P8MP3x1
Not exactly fresh news but it turns out that Compiler Explorer got an amazing feature last year: ability to step through the individual LLVM optimization passes and see what exact effect it has on your code sample. 🤯
Example: https://rust.godbolt.org/z/46P8MP3x1
👍12🔥3🤯1💩1