Hind написал:
Код:
int score = 0; int * dice = new int[n]; for (int i = 0; i < n; i++) { dice[i] = 1 + 5 * random(); score += dice[i]; } ... delete [] dice;
Hind, мне кажется правильнее было бы
dice[i] = 1 + 6 * random();
Неактивен
Gesperid написал:
А мне кажется все верно:
1 + 5 * random() => 1 + 5 * [0..1] => 1 + [0..5] => [1..6]
Это кажется, если я не забыл еще как работает сишный random - он по-моему не включает 1. Посему число из диапазона надо умножать на 6 (выйдет при int от 0 до 5) и прибавлять 1.
И, по-моему, тут я все-таки прав. И возможно, в конкретных случаях, бывают конкретно правые и конкретно неправые, а, Gesperid?
Отредактировано Korwin (28.03.2008 14:50)
Неактивен
2Eten:
Ты хоть сам осознаёшь, какую ерунду написал?
Зачем человек придумал игральные кости? А только лишь затем, чтобы создать удобный, наглядный генератор случайных чисел. Таким образом, классический игральный кубик о шести гранях - это в идеале простейшее устройство для получения случайного числа из ряда 1..6 с одинаковой вероятностью. И всё!!! Не надо ничего усложнять, доводя до маразма.
Неактивен
Korwin, по-моему, мы оба немного загнались. Твой вариант, кажись, неравномерен, как и мой (Hind) без арифметического округления
Да и вообще, в стандартных либах нет random(), но есть rand():
rand() % 6 + 1
Korwin написал:
И возможно, в конкретных случаях, бывают конкретно правые и конкретно неправые, а, Gesperid?
Конечно бывают (в конкретных случаях)
Отредактировано Gesperid (28.03.2008 15:55)
Неактивен
Gesperid написал:
Korwin, по-моему, мы оба немного загнались.
Туше! Мир.
Неактивен
Я же писал:
Где random - функция, возвращающая случайное число от 0 до 1
Имелось в виду, принадлежащее отрезку [0, 1].
Разумеется, если вы хотите использовать сишную функцию, нужно курить ее описание.
Eten, у вас очень большая проблема - вы считаете "заумные слова" ничего не значащими, а между тем это часть терминологии теории вероятностей, имеющая точные и четкие определения и совершенно обоснованно здесь мной используемая.
Неактивен
Eten, у вас очень большая проблема - вы считаете "заумные слова" ничего не значащими, а между тем это часть терминологии теории вероятностей, имеющая точные и четкие определения и совершенно обоснованно здесь мной используемая.
Когда выложишь нормальный код, тогда и приму твои заверения.
Народ не забывайте, что выложенная версия кубиков, всего лишь предложенный вариант. Мной он видится проще тем, что он учитывает все, что происходит во время броска и полностью моделирует его. Этого достаточно, чтобы нормально иммитировать. Раз уж вы считаете мой алгоритм бредом, то приложите к своим словам аргументы по надежнее пустых слов, а пока обсуждать нечего.
Таким образом, классический игральный кубик о шести гранях - это в идеале простейшее устройство для получения случайного числа из ряда 1..6 с одинаковой вероятностью.
А как ты рандомизируешь момент, когда кубик может катиться или поварачиваться в одном направлении определенное время? В таком случае числа могут быть явно не точными и этим пренебрегать нельзя. А с использованием RND можно учесть этот момент, даже если его немножко идеализировать, но только с его помощью, а не напрямую.
Так, что народ, если хотите поспорить, приводите свой код или просто алгоритм, вот тогда и поговорим. Лично мне, больше интересно обсуждение разных вариантов алгоритмов в данной теме, а не препирательства по типу ты рылом не вышел вот и молчи.
Отредактировано Eten (28.03.2008 20:47)
Неактивен
Eten написал:
Когда выложишь нормальный код, тогда и приму твои заверения.
Да... Тут явно не о чем говорить - уровни подготовки несопоставимы.
Неактивен
Eten, если уже несколько человек сказали, что ваш алгоритм - бред, может стоит им уже поверить? Если свою платформу вы пишете с таким же подхдом, то я боюсь за ее работоспособность.
Кому нужны все ваши учитывания, если пользователь все равно видит простой рандом? Просто вместо того, что бы один раз срандомить число, вы делаете это 30 раз, и где здесь имитация? Неужели это так трудно увидеть?
Что касатеся еще более "реалистичного" алгоритма, то проще всего иметь два массива граней и "перекатывать" их друг на друга. Только я не думаю, что это кому-нибудь реально нужно кроме вас, если в вашем варианте все легко сводится к простому рандому.
Отредактировано - VampirE - (29.03.2008 10:24)
Неактивен
- VampirE - написал:
Кому нужны все ваши учитывания, если пользователь все равно видит простой рандом? Просто вместо того, что бы один раз срандомить число, вы делаете это 30 раз, и где здесь имитация? Неужели это так трудно увидеть?
А я вот поддержу Eten'а. Согласен, что если требуется получить просто случайное число, то изобретать велосипед не следует. Но если задачей ставится именно достоверная имитация броска набора кубиков, то обычным рандомом не обойдешься.
Теперь к вопросу "нафига это надо". В некоторых случаях такое моделирование вполне может быть уместно. И такой "рандом" вполне может быть "фишкой" игры. Конечно, все это ближе к "искусству", в обычных случаях такого не нужно, но попытка решить задачу таким образом вполне имеет право на жизнь.
Неактивен
fireton написал:
Но если задачей ставится именно достоверная имитация броска набора кубиков, то обычным рандомом не обойдешься.
Но ведь достоверная имитация броска кубиков - задача, мягко говоря, другого порядка сложности при отсутствии готового физического движка. Никто с этим и не спорит, просто то, что предложил Eten, для игрока ничем не отличается от моего варианта (специально частотные диаграммы построил), а работает не столь эффективно.
Неактивен
(специально частотные диаграммы построил)
(Смотрит на тему) А где ты их выложил? Уж очень интересно посмотреть
А я вот поддержу Eten'а. Согласен, что если требуется получить просто случайное число, то изобретать велосипед не следует. Но если задачей ставится именно достоверная имитация броска набора кубиков, то обычным рандомом не обойдешься.
Каждый игрок имеет право использовать нормальный иммитатор, а не обижаться на слабые места рандома.
К тому же брать физический движок нужен для игры в "Кости", а здесь задача проще, но требования к иммитации теже.
Eten, если уже несколько человек сказали, что ваш алгоритм - бред, может стоит им уже поверить? Если свою платформу вы пишете с таким же подхдом, то я боюсь за ее работоспособность.
1) ТО что, ты находишься в большинстве - это еще не значит, что ты прав.
2) Можно и дом на даче по десять раз переделывать, даже из-за какой-то мелкой не точности. И не важно, что другие крутят у виска - главное конечный результат.
З.Ы.
В общем, позже, выложу последний вариант алгоритма для тех, кому это интересно.
Неактивен
Eten написал:
А где ты их выложил? Уж очень интересно посмотреть
А нафига? Они ничего не докажут сами по себе - всегда можно сказать, что я их нарисовал от фонаря. Кому нужно - тот сам построит, да не забудьте взять число бросков побольше - хотя бы миллион.
Вот реализация моего алгоритма на C:
#include <stdio.h> #include <stdlib.h> int main() { srand((unsigned)time(0)); int n = 1000000; int num = 0; int dice[6] = {0,0,0,0,0,0}; for (int i = 0; i < n; i++) { num = rand() % 6; dice[num]++; } printf ("%d\n%d\n%d\n%d\n%d\n%d", dice[0], dice[1], dice[2], dice[3], dice[4], dice[5]); }
Программа выдает список количества выпаданий для каждой стороны кубика.
Если так интересно, график тут.
Можешь сравнить со своим - отличий за пределами погрешности не будет.
Ну, наверное, уже все понятно, да?
Отредактировано Hind (29.03.2008 20:53)
Неактивен
Fireton, если бы имела место быть программа, которая отрисовывала бы бросок кубика со всей точностью, как в то же "Ведьмаке" это имело бы смысл.
В том варианте, что предложил Eten и в сопроваждении к простому рандому можно написать, что все это решается с помощью "полной имитации броска". Пользователь все равно не увидит подлога, так как это априори недоказательно. Вот я о чем. В контексте имеющейся программы такой подход выглядит как минимум странным, если не сказать глупым.
Неактивен
Ну Eten, возможно, планирует развивать программу. Построить массивы взаимодействия граней, чтобы отслеживать, куда кубик может перевернуться с текущей грани и задавать случайно количество переворотов, к примеру.
Неактивен
Спасибо, Hind. С интересом изучу. Но мне все-таки интересно будет сопоставить свой вариант и твой. Посмотрим как говорится, но за код все равно спасибо.
Неактивен
Это немношко оффтоп, но полезно знать для всех.
Во-первых съехидничаю, хоть прога на ваш взгляд бред, но ее все равно продолжают скачиивать, вопрос только почему?!
Во-вторых эта тема реальный пример, пробуждения форумчан к активному действию. Все сидят и думают, как же народ расшевелить, вот и пример. Нашелся дотошный умник написал и выложил, все сразу зашевелились. Учись, Korwin!
З.Ы.
Приношу извенение администрации, но этот пост считаю поучительным для всех нас (и меня в том числе).
Неактивен
Мне конечно крайне приятно узнать, что кубики продолжают скачивать, но не совсем понятно какое отношение они имеют к интерактивной литературе и что эта тема делает в разделе "Новости из мира иф"?
Что же касается Корвина, то он уже слишком star чтоб еще чему-то научиться.
Неактивен
А чего тут не понятного, у нас в русском сообществе леятельность не такая уж и кипучая. И есть товарищи, которые все думает, как народ расшевелить (например использование платформы, написание новых квестов). А вы посмотрите, какая бурная реакция в теме, так и напрашивается вопрос: "Ребята, а вы чего всполошились то?"
З.Ы.
В общем, кто разбирается в психологии, тот и поймет мой предыдущий пост, тут и объяснять нечего. (итак уже не в тему)
что эта тема делает в разделе "Новости из мира иф"?
А почему бы не новость, я лично не видел нигде на ИЛ информацию о подобного рода программах на ПК, чем тебе не новость.
Уж если человек считает, что это была не новость, то и аргументы должны прилагаться к этому.
Я со своей стороны могу сказать, что никто еще не выкладывал подобной темы и не занимался подобным вопросом! К тому же не смотря на бесмысленность программы для кого-то, она имеет свой маленький смысл: показывать макс.20 кубиков после броска в числовом виде (больше и не нужно, а как она это делает дело десятое). А совать прогу в КПК или телефон, зачем париться?
Еще одним аргументом будет программа Bred3, она является аналагом блокнота, что тоже может быть бесмысленной затеей (название об этом тоже говорит), но она в многократ лучше обычного блокнота, как по возможностям, так и по работе с текстом. Вот тебе и пример бесмысленного, но полезного действия!
А уж если загнуть и по филосовски, то можно явно сказать, что наши с тобой действия в ИЛ - маеться дурью.
З.Ы.
Интересно, а где есть еще программы ПК для броска кубиков без требования к библиотекам?
Неактивен
Eten написал:
... А вы посмотрите, какая бурная реакция в теме...
Да... пофлудить мы все мастера...
Неактивен
Eten написал:
А почему бы не новость, я лично не видел нигде на ИЛ информацию о подобного рода программах на ПК, чем тебе не новость.
Ну я пока тоже не видел нигде на ИЛ фотографий сисек, результатов последних матчей по крикету и кодов на квейк-3. Надо разместить?
Не кажется что это имеет к Ил примерно такое же отношение как и виртуальные игральные кубики? Имхо для новостей которые ИЛ не касаются есть раздел "Флейм". Ну если администратор проснется, он меня может быть поправит.
Eten написал:
Интересно, а где есть еще программы ПК для броска кубиков без требования к библиотекам?
Помоему их дох*я. Я уже 9 лет пользуюсь консольной программкой под дос которая вообще ничего не требует.
Неактивен