Что же делать системам без EEPROM - просить пользователя на бумажке записывать последнее число, а потом вводить его при необходимости? Прямо какой-то сериал Lost.
Да блин, что вы за системы программируете. Еще скажите что, там нет millis(). Да хоть в дополнительной памяти для часов реального времени. Или их тоже нет.
Вы мне льстите. Какие системы я могу программировать, раз на random() посыпался. Чайник-то с трудом ставлю: никак мне могу запомнить - сначала газ, потом спичка или наоборот.
У интела встроенный аппаратный рандом генератор есть и апи к нему. В stm32f4 верхних серий тоже есть, так что даже под санкции о шифровании попадает. Всё остальное только analogRead(0) с открытого порта наводку из эфира один раз цифрануть и в сид засунуть с непонятными последствиями.
Нет, никакого холивара не будет. По двум очень простым причинам: 1) я достаточно хорошо владею материалом и 2) у меня нет никакого желания доказывать кому либо, что он прав или не прав.
И да, 123 не является настоящим случайным числом. И 124 - тоже. Случайных чисел не бывает в принципе, как я уже имел случай сообщить. Случайные последовательности бывают, а случайных чисел не бывает (ну, разве что автомат пуха их в состоянии генерить при помощи лямда-функций).
Да, нет, char - он и в Африке char, просто в Си костанта вроде 'a' является int'ом, а на char'ом (если говорить строже - всегда расширяется до int'а, если используется не в контексте char). Фокус основан на этом.
Случайных чисел не бывает в принципе, как я уже имел случай сообщить.
Видимо поэтому приятель с пеной у рта доказывал мне, что выиграть в рулетку невозможно...ссылался при этом на какие-то математические формулы и, мои возвражения типа...а если играть стрит на 4 улицы...а если делать ставки только при вбросе шарика к примеру при вращении по часовой стрелке...мои доводы о пятиразовом смене крупье его не убедили )))
Но тема рандома не раскрыта, к примеру рандом от 1 до 49 ...
Почему вы считаете, что этот код мой и я его написал так, что он будет работать неправильно? Я воспользовался стандартным функционалом в соответствии с "руководством по эксплуатации". Обнаружил проблему, причину и рассказал. Это была моя единственная цель.
Костылей наделать - не вопрос, я тебе уже об этом писал.
Что же делать системам без EEPROM - просить пользователя на бумажке записывать последнее число, а потом вводить его при необходимости? Прямо какой-то сериал Lost.
Вы мне льстите. Какие системы я могу программировать, раз на random() посыпался. Чайник-то с трудом ставлю: никак мне могу запомнить - сначала газ, потом спичка или наоборот.
просить пользователя на бумажке записывать последнее число
Можно с утра звонить в пиндосское посольство и спрашивать, какой на сегодня код.
просить пользователя на бумажке записывать последнее число
Можно с утра звонить в пиндосское посольство и спрашивать, какой на сегодня код.
Хорошая идея. А я думал к курсу рубля привязаться...
У интела встроенный аппаратный рандом генератор есть и апи к нему. В stm32f4 верхних серий тоже есть, так что даже под санкции о шифровании попадает. Всё остальное только analogRead(0) с открытого порта наводку из эфира один раз цифрануть и в сид засунуть с непонятными последствиями.
Так чё там с распределением?
Кстати, про analogRead() и распределение.
Вот тут пишут, что он, как источник числа посева, так себе: https://hackaday.com/2018/01/08/entropy-and-the-arduino/ . Предлагают воспользоваться джиттером тактовой МК (правда я не совсем понял, относительно чего он вычисляется и чем замеряется) или неинициализированной памятью - рандомайзом на фотонах: https://hackaday.com/2015/06/29/true-random-number-generator-for-a-true-hacker/
Я так понимаю, что всегда начинали с первого, а потом жизнь начинала казаться лучше?
Вы меня пугаете...
Настоящих случайных чисел в таких алгоритмах не бывает в принципе...
является ли, скажем, число 123 Настоящим случайным числом?
Нет, никакого холивара не будет. По двум очень простым причинам: 1) я достаточно хорошо владею материалом и 2) у меня нет никакого желания доказывать кому либо, что он прав или не прав.
И да, 123 не является настоящим случайным числом. И 124 - тоже. Случайных чисел не бывает в принципе, как я уже имел случай сообщить. Случайные последовательности бывают, а случайных чисел не бывает (ну, разве что автомат пуха их в состоянии генерить при помощи лямда-функций).
Всё-таки пример неудачен - там только честный.
Хотите простой пример разницы между честным и нечестным? Примерчик правда уже с баянистой бородой, но если кто случайно не видел, то прикольно.
Итак, пишем одну и ту же коротенькую функцию на Си и на С++ и запускаем обе. Для этого в одной папке кладём два файла:
Файл duck.c
Файл xxx.ino
Как видите, функции идентичны. Только одна на С, а другая (та, что в .ino) на С++.
Теперь запускаем и смотрим результат
Что-то смутно припоминаю, что в Си char может принимать не менее 257 различных значений.
Да, нет, char - он и в Африке char, просто в Си костанта вроде 'a' является int'ом, а на char'ом (если говорить строже - всегда расширяется до int'а, если используется не в контексте char). Фокус основан на этом.
А если поменять на русскую 'a' что то изменится ? :)
Да, перепутал: в К&R речь шла не о типе char, а о функции getchar.
А если поменять на русскую 'a' что то изменится ? :)
Попробуйте.
Случайных чисел не бывает в принципе, как я уже имел случай сообщить.
Видимо поэтому приятель с пеной у рта доказывал мне, что выиграть в рулетку невозможно...ссылался при этом на какие-то математические формулы и, мои возвражения типа...а если играть стрит на 4 улицы...а если делать ставки только при вбросе шарика к примеру при вращении по часовой стрелке...мои доводы о пятиразовом смене крупье его не убедили )))
Но тема рандома не раскрыта, к примеру рандом от 1 до 49 ...
При random(49) и сиде с аналогрида (или любом, меньшем либо равном 16807) в Wiring первый раз всегда выигрывает казино.
Всё-таки пример неудачен - там только честный.
Описание, скорее, не сильно продуманное - педагогического опыта не имею.
"Честный/нечестный" я всегда считал местным мемом, рождённым Онкелем, который доказывает, что Си честней Wiring-а на 146%
А если поменять на русскую 'a' что то изменится ? :)
Смотря в какой кодировке. Для UTF-8 результат будет одинаков.
"Честный/нечестный" я всегда считал местным мемом, рождённым Онкелем, который доказывает, что Си честней Wiring-а на 146%
Как минимум.)
При random(49) и сиде с аналогрида (или любом, меньшем либо равном 16807) в Wiring первый раз всегда выигрывает казино.
у тебя в коде сид должен быть не меньше 127773
Я тебе еще вчера предложил - домножать сид на это или близкое число - все будет работать правильно.
Почему вы считаете, что этот код мой и я его написал так, что он будет работать неправильно? Я воспользовался стандартным функционалом в соответствии с "руководством по эксплуатации". Обнаружил проблему, причину и рассказал. Это была моя единственная цель.
Костылей наделать - не вопрос, я тебе уже об этом писал.
Почему вы считаете, что этот код мой и я его написал так
да не обижайся ты. Пишу "у тебя в коде" в том смысле, что ты его выложил.
Мое замечание касалось лишь твоего сообщения #70:
>>> При сиде с аналогрида (или любом, меньшем либо равном 16807)
=== не 16807, а 127773 ! - все
ЗЫ А вообще, информация очень полезная. Сам всегда пользовался АналогРидом для сида, теперь буду знать, что это туфта.