Игра “Шарики в колбах”

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

Нет. Тут мысль ширше: программы анализируют внешние воздействия и из миллисов этих воздействий можно лепить псевдослучайности. Программное нажатие кнопки только если программа на другом МК.
…наверно ещё связка двух мк может давать рандом настоящий.

Для этого нужно обязать пользователя их жмакать.
Но это затея провальная - многие меньше, чем за биткойн, не согласятся.

Лепить псевдослучайности - задача ГПСЧ. Чем меньше Вы будете лезть в эту “кухню”, тем лучше будет результат. Об этом, кстати, хорошо написано у Кнута во 2-м томе (глава 3).
От внешнего воздействия требуется единственное - указать точку входа (только одну!) в генерируемую им последовательность.

Возьмите серву и сделайте робопалец – нехай жмакает по команде из МК!

:slight_smile:
Кнопку рандома в сетап, иначе до луупа не дойдёт, без жмака.

Кстати, хорошая идея.
Даже совершенно необязательно показывать ее пользователю: робопалец вполне допустимо разместить в непрозрачном корпусе, чтобы пользователь даже не знал о его существовании. Главное, чтобы характерное время механического процесса было во много раз больше, чем шаг измерения времени.

А дребезг мех.кнопки не пойдёт в пользу рандома?

Еще раз; число нужно ОДНО.

И это число - 42.

4 лайка

А сколько дребезга будет? Раз 10-20?

Вот ты, Лилик, трудовик. По опыту - один и тот же человек в одну и ту же древесину один и тот же гвоздь загоняет с большой разницей в количестве ударов?

Нет. Видимо и с кнопкой так. Ну с другой стороны, одно нажатие 10 замыканий, второе 11. Вот уже и ОДНО число входа в кольцо псевдослучайных чисел.

Третье 10, четвертое 10, пятое 11.
Не сильное разнообразие, да?

@lilik третий день обсуждаем, может пора попробовать что то))

#define ROSC_RANDOMBIT_OFFSET _u(0x0000001c)
#define ROSC_BASE _u(0x40060000)

// return random number by ROSC between 0-2^N
// N should be in [0,32]
unsigned int ROrand(int N)
{
  static volatile uint32_t *randbit_reg = (uint32_t *)(ROSC_BASE + ROSC_RANDOMBIT_OFFSET);
  unsigned int random = 0;
  for (int i = 0; i < N; i++)
  {
    unsigned int random_bit = 0x1 & (*randbit_reg);
    random = random << 1 | random_bit;
  }
  return random;
}

Мысль была начать со стабилитрона. Но холод в 7 градусов отгоняет от гаража :slight_smile:

Забавно. Испытывал?

нет, я только светодиодами могу мигать))

1 лайк

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

Петрович хорошую идею подал:
собитается примерно такая конструкция и измеряется время прохождения сигнала: