|
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 186
|
|
Рандомайзер07.12.2021, 22:22. Показов 4594. Ответов 49
Метки нет (Все метки)
Как можно реализовать максимально рандомный рандомайзер от 0 до 32767 через rand()
Пробовал через библиотеку <time.h> Но там числа буквально на единицу отличаются друг от друга А других вариантов особо и не нашёл, везде описана дефолтная работа функции
0
|
|
| 07.12.2021, 22:22 | |
|
Ответы с готовыми решениями:
49
Рандомайзер Рандомайзер не работает Рандомайзер слов на C++ |
|
Любитель чаепитий
|
|||
| 08.12.2021, 20:03 | |||
|
или нет? а за примерами далеко ходить не надо: https://xakep.ru/2021/07/07/ka... nager-bug/ и тут ещё не rand() использовался(скорее всего). всё сводится к одному: угадал сид - сбрутил пароли.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 08.12.2021, 20:27 | ||||
|
а на деле запароленный rar ломануть не могут. сможешь написать софтинку, которая реально сможет ломануть пароль, если ей на вход подать время его создания?
0
|
||||
|
Любитель чаепитий
|
|||
| 08.12.2021, 21:11 | |||
![]() CVE, я так полагаю, тоже завели тоже чисто по-приколу, а чо б и нет. маркетинговый ход в пользу Касперского.
0
|
|||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
||
| 08.12.2021, 21:43 | ||
|
Для шифрования как раз используются псевдо-случайные числа - потому что эту последовательность можно повторить, если знать пароль. Случайные числа невозможно получить математически, только аппаратно. Например, количество милисекунд, прошедших с момента включения компьютера - вряд-ли сможешь 2 раза получить одинаковое число. Или какая-нить специальная микросхема, которая физически генерирует случайные числа.
0
|
||
|
|
||
| 08.12.2021, 21:55 | ||
|
0
|
||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
||
| 08.12.2021, 22:11 | ||
|
1. Нафига доверять сторонней программе создавать за тебя пароли, если лучший ГСЧ у тебя в голове?
2. Если уж совсем нет рэндомной фантазии - напиши программу, которая будет быстро-быстро перебирать буквы, цифры и символы. И по нажатию кнопки добавляй в строку ту, на которую в данный момент показывает счётчик. Закрой глаза и жми на кнопку с заведомо нерегулярными паузами - получишь случайный пароль. Добавлено через 8 минут
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 08.12.2021, 23:17 | ||||||
|
на которую ссылается статья по твоей предыдущей ссылке. ты заявил: в ней нет информации ни об одном реальном взломе "слабого пароля". и как по мне, сами данные тоже сомнительные. я не великий математик, и могу ошибаться. но у меня очень большие сомнения насчет этого заявления:
тобишь, это не более, чем домыслы теоретика. вот когда ты предоставишь факты, которые будут свидетельствовать, что любые ключи/пароли, основанные на гпсч, научились вскрывать за адекватное время, вот только тогда можно будет сказать, что их использование в криптографии не приемлимо. а покамест, как я и писал выше: а в каких то - вполне себе приемлимо.
0
|
||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||||||||||||||||
| 12.12.2021, 07:09 | |||||||||||||||||
|
Я всегда считал, что если генератор rand() равномерно генерит числа от нуля до X, то если брать rand() % (X-N), то значения до N будут встречаться чаще в результате такой операции. Это и породит неравномерное распределение независимо от самого качества функции rand().
Кликните здесь для просмотра всего текста
Первые шесть значений очевидно будут встречаться в два раза чаще.
Для rand() % X с большим RAND_MAX показать, конечно, сложнее гораздо. Но суть та же. Ограничение диапазона приведёт к неравномерному распределению. Добавлено через 3 минуты Добавлено через 9 минут
0
|
|||||||||||||||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|||||||
| 12.12.2021, 09:06 | |||||||
0
|
|||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||
| 12.12.2021, 14:21 | |||
![]() Процитирую уважаемого hoggy, "ты сможешь на практике продемонстрировать неравномерность?" Ваш myrnd() даёт значения в диапазоне от 0 до 32771. Равномерно? Допустим. Но если отсекать myrnd() % 30000 -- он не будет давать равномерное распределение. И числа от нуля до 2771 будут встречаться чуть чаще. Почему? Просто потому, что число 1 и число 30001 в равномерном распределении должны встречаться одинаково часто. То есть, что 1 что 30001 должно встречаться с одинаковой вероятностью 1/32771. А 1 % 30000 и 1 % 30001 для обоих случаев дают в результате 1. То есть единица начнет встречаться банально чаще, с вероятностью 1/32771 + 1/32771. То же самое для всех остальных значений от 0 до 2771.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||||
| 12.12.2021, 14:21 | |||||||||||||||||||||||||
|
причем, у тебя ошибка не в математике, а в логике. что бы осознать эту ошибку, не нужно владеть тервером. итак, по порядку: 1. ты привел не_корректную формулу диапазона. математически корректная формула: rnd() % (maxVal - minVal + 1) + minVal;где: rnd() - псч на всем диапазонеспециально ещё раз повторю: rnd() - псч на всем диапазонеэто - очень важный момент. 2. момент важный, но не критичный. я привел этот пункт исключительно для справки. запомни: неправильно: rand() % (X-N)правильно: rnd() % (maxVal - minVal + 1) + minVal;формула корректна с точки зрения математики. но не_корректна с точки зрения с++. однако мы не будем сейчас заострять на это внимание
на максимальном диапазоне там будет краш (следствие UB) стандартные инструменты, такие как std::uniform_int_distribution<int> distribution(a, b); используют более сложный алгоритм, который учитывает особенность арифметики с++, и связанные с ним UB. но поскольку проблема сугуба техническая, а не математическая, то мы проигнорируем этот факт. 3. для иллюстрации момента, возьмем мой экспериментальный дайс из #9 он удобен в том плане, что наглядно видна вся подноготная. https://rextester.com/IXAEB69731
4. а что сделал ты в своём примере? ты взял уже готовое число из заданного диапазона, и ещё раз его обрезал. вот здесь у тебя уже дайс выдаёт в нужном диапазоне: 5. в итоге, что на самом деле показывает твой неудачный пример? он показывает частоту отстатков от деления от чисел в диапазоне от 0 дол 15 вот что ты сделал:
ты сослася на документацию, заявляя, что якобы там где-то что-то обрезается. ну так вот, из документации никак не следует, что где-то что-то будет обрезаться. а из тезиса о том, что под капотом rand может быть какой угодно алгоритм, вообще ровным счетом ничего не следует, кроме того, что под капотом может быть какой угодно алгоритм. на основании такой информации нельзя делать выводов о поведнии rand
0
|
|||||||||||||||||||||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||||||||
| 12.12.2021, 14:38 | |||||||||
|
Но когда мы берём остаток от деления на не кратное максимальному значению, мы изменяем распределение случайных чисел. Добавлено через 15 минут Получаем rand() % (9 - 0 + 1) + 0? Не вижу, как это отличается от rand() % 10. То есть числа 1 и 32001 нам встретятся с одинаковой вероятностью 1/0x7fff? С какой вероятностью будет встречаться число 1, если брать "rnd_() % (32000 - 0 + 1) + 0"?
0
|
|||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 12.12.2021, 14:49 | |||
|
напоминаю: нет вообще никакой связи между стандартном, и тем, что ты не умеешь правильно обрезать рандом для получения диапазона.
0
|
|||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||
| 12.12.2021, 15:14 | ||||
|
Не по теме: Или, выражаясь вашим языком: Добавлено через 15 минут Я не вижу, как отличаются функция, возвращающая равномерно распределённое случайное число в диапазоне от 0 до 15 от функции, возвращающей равномерно распределённое случайное число в диапазоне от 0 до 0x7fff. Почему не должно быть такого же эффекта неравномерности выпадающих значений только гораздо менее выраженного?
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 12.12.2021, 15:17 | |||||
|
ведь иногда люди просто несут чушь. Кликните здесь для просмотра всего текста
сначала они пишут про "обрезание".
и что "оно" как-то там в стандарте называется. а потом выясняется, что "обрезание" и "оно" - фигуранты вообще никак не связанных друг с другом предожений. то ли у людей проблема с логикой. то ли - с русским языком. то ли всё вместе. у нормальных людей повествование представляет собой цепочку предложений, связанных друг с другом общим контекстом. например:
теперь твой вариант: с точки зрения грамматики русского языка, кажется что да, "обрезание". но с точки зрения здравого смысла - это просто чушь.
0
|
|||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||
| 12.12.2021, 15:28 | ||
|
Не по теме: Мне очень тяжело будет поддерживать диалог в таком пафосно-надменном пассивно-агрессивном тоне, но я постараюсь, если вам, уважаемый hoggy, будет так удобнее. Ваше неумение понимать контекст и желание связать всё до состояния каши по прежнему их никак не связывает. Сейчас вы несёте чушь и уходите от темы. Еще раз вопросы: "rand() % (9 - 0 + 1) + 0" даст такие же результаты как "rand() % 10"? Если функция rnd_() даёт равномерно распределённые значения между 0 и 32676, а функция rand() дает равномерно распределённые значения от 0 до 15, то почему "rand() % (9 - 0 + 1) + 0" - "так делать нельзя", а "rnd_() % (29999 - 0 + 1) + 0" - всё окей и равномерно?
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 12.12.2021, 15:45 | |||
|
два никак несвязанных предложения написал ты, а проблемы с пониманием контекста якобы у меня. ну-ну. ты сам признал, что написал два несвязанных друг с другом предложения. у несвязанных предложений нет, и не может быть никакого контекста. а значит местоимение "оно" - это чушь. это - не какое то моё личное мнение. это - русский язык.
0
|
|||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||
| 12.12.2021, 15:59 | |||
|
Ты так и не ответил ни на один из вышеприведённых вопросов. Еще раз вопросы: Так всё же "rand() % (9 - 0 + 1) + 0" даст такие же результаты как "rand() % 10"? Если функция rnd_() даёт равномерно распределённые значения между 0 и 32676, а функция rand() дает равномерно распределённые значения от 0 до 15, то почему "rand() % (9 - 0 + 1) + 0" - "так делать нельзя", а "rnd_() % (29999 - 0 + 1) + 0" - всё окей и равномерно? Не по теме: Так удобнее общаться? Не дотягиваю с пафосом немного, понимаю. Маловато опыта.
0
|
|||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|||||||
| 12.12.2021, 16:42 | |||||||
|
Вот формула линейной конгруэнтной функции: x = (x * 379 + 1) % 32771; Понятно, что значение х нельзя менять произвольно, иначе нарушится работа функции. Но можно снять копию с этого числа, и с ней уже делать что заблагорассудится:
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 12.12.2021, 16:53 | ||
|
где RND - возвращает число с нормальным распределением. а X - некоторое произвольное число из диапазона RND. штука в том, что если принять за истину, что RND даст распределение K тогда RND % X даст распределение B, где B хуже чем K таким образом, формулы извлечения псч в нужном диапазоне, которые используют отстаток от деления, дают результат с более худшим распределением, в сравнении с базовым RND
1
|
||
| 12.12.2021, 16:53 | |
|
Почему не работает рандомайзер
Рандомайзер Простой рандомайзер
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|
|
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли
Введение: Экологический рынок как игра с нулевой суммой
Традиционная экология долгое время. . .
|
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ
Введение: Синдром «цифрового учебника»
Современные большие языковые модели (LLM) обладают колоссальным. . .
|
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос.
Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех.
А широколиственный лес тоже имеет самую крутую биомассу.
То почему не возникло их симбиоза? Это. . .
|
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне.
Это уже новая модель, модель сукцессии грибной.
потоки фосфора, азота. Углерода.
5 видов организмов.
Я даже. . .
|