?

Log in

No account? Create an account
Лотерея, продолжение - In 3.14 we trust [entries|archive|friends|userinfo]
BrotherFlame

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Лотерея, продолжение [Sep. 12th, 2016|02:15 pm]
BrotherFlame
[Tags|]

Алгоритм выбора:

Прога на Java из одной строчки:

int winner = first + (int)(Math.random()*((total-first) + 1))

где
first = 1
total = 17

Розыгрыш сегодня после 18:00
LinkReply

Comments:
[User Picture]From: wturm
2016-09-12 11:35 am (UTC)
Яву не знаю, так вопрос глупый наверное. Нет шанса, что 18 может получиться?
(Reply) (Thread)
[User Picture]From: zelanton
2016-09-12 12:07 pm (UTC)
нет шансов что вообще что-то отличное от 1 будет.
не говоря уже о том, зачем там вообще first
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:25 pm (UTC)
Картинку с частотами выпадения номеров на миллионе испытаний ниже в каммент запостил
(Reply) (Parent) (Thread)
[User Picture]From: zelanton
2016-09-12 12:05 pm (UTC)
канделябром по голове *стук*
(Reply) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:13 pm (UTC)
Всем сомневающимся, и особенно, Зелантону.

Вот частоты выпадения номеров по этой формуле на 1 000 000 испытаний. 18 добавил для иллюстрации, что его не будет никогда.

Кому не лень, суммируем все частоты, получаем ровно 1 000 000 и успокаиваемся.

Math.random() возвращает псевдослучайное число в диапазоне [0,1)
(Reply) (Thread)
[User Picture]From: zelanton
2016-09-12 12:15 pm (UTC)
http://introcs.cs.princeton.edu/java/11precedence/

Я java вообще не знаю.
Но из спецификации видно, что там сначала преобразование, потом умножение. А преобразование - это отбрасывание дробной части.

Edited at 2016-09-12 12:16 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:22 pm (UTC)
Для этого делаем миллион испытаний и смотрим на частоты выпадения номеров. Тонкости компилятора для этого не нужно знать.

Картинку с частотами ниже.

Edited at 2016-09-12 12:25 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:27 pm (UTC)
Сорри, при наборе формулы ошибся, в коде есть скобочка
(Reply) (Parent) (Thread)
[User Picture]From: zelanton
2016-09-12 12:28 pm (UTC)
гггг))))

хотя хз, может и я не прав, java повторю не знаю.

Edited at 2016-09-12 12:30 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:32 pm (UTC)
Мегареспект.

Прав, прав.
Прога на компе, формулу ручками набирал на мабиле

(Reply) (Parent) (Thread)
[User Picture]From: wturm
2016-09-12 12:35 pm (UTC)
Угу, теперь понятно.
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:23 pm (UTC)
(Reply) (Thread)
[User Picture]From: dikoe_bydlo
2016-09-12 12:44 pm (UTC)
Перепись программистов? Прога с ошибкой. +1 надо вынести за скобки
(Reply) (Thread)
[User Picture]From: brotherflame
2016-09-12 12:54 pm (UTC)
Ыыы прога без ошибки (см картинку), в посте ошибка была

Edited at 2016-09-12 12:56 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: dikoe_bydlo
2016-09-12 08:04 pm (UTC)
А, чорт. Не заметил "= first +". Тогда всё верно
(Reply) (Parent) (Thread)
[User Picture]From: brotherflame
2016-09-12 08:14 pm (UTC)
Там скобочек не хватало изначально
(Reply) (Parent) (Thread)
From: medveda
2016-09-12 12:57 pm (UTC)
гуманетарий и ничо не понял ни в псто ни в каментах
(Reply) (Thread)
[User Picture]From: brotherflame
2016-09-12 01:05 pm (UTC)
Из комментов можно понять, что Зелантона не наипешь.
А из поста ничего нового -- пишу с ошибками, читаю по слогам, бгг
(Reply) (Parent) (Thread)
From: medveda
2016-09-12 01:16 pm (UTC)
за это его и любим!
(Reply) (Parent) (Thread)
[User Picture]From: claclu
2016-09-12 12:58 pm (UTC)
Так не честно
Меняй генератор на железный
(Reply) (Thread)
[User Picture]From: brotherflame
2016-09-12 01:06 pm (UTC)
Ок, для след. розыгрыша соберу в гараже Энигму по трофейным чертежам
(Reply) (Parent) (Thread)
[User Picture]From: claclu
2016-09-12 01:37 pm (UTC)
Гараж Эппл или Майкрософт ?)
(Reply) (Parent) (Thread)