![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Здраствуйте,Форумчане.
У меня есть проблема есть массив [1..9,1..9] в этом массиве будут хранится числа скажем от -100 до +100 (это не важно) и мне нужно выбрать из этого массива ячейку так , чтобы чем число в ячейке меньше тем была бы более вероятность выборки этой ячейки,но все равно нужно чтобы ячейки выбирались случайным образом.Все дело в вероятности выборки ячейки массива.Вероятность выборки даже самого большого числа тоже должна быть(но меньше). И еще бы иметь возможность менять вероятность (ну это наверное вообще невозможно :-) ) Вообще-то это наверное из области математики но вышку я изучал давно и все позабыл :-(. Существует ли какой-нибудь готовый метод или подскажите более подходящий алгоритм . Пока на ум ничего стоящего не приходит.Заранее спасибо. p.s. Хочу для приемной дочери сделать программу для зубрежки таблицы умножения (14 лет а таблицу умножения не знает - всегда под рукой калькулятор ) Это сообщение отредактировал(а) SlaUr - 18.1.2007, 02:27 |
|||
|
||||
| VaiMR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 25.11.2006 Репутация: нет Всего: 2 |
А как расположены числа в массиве?
Если по порядку то все это реализовать достаточно просто, а если рандомно, то алгоритма (мне кажется) существовать даже не может. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Добавлено @ 09:55 SlaUr А просто псевдослучайные числа не подходят разве? Всё ж зубрёжка |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Обьясняю подробнее
В этот массив заносится количество правильных ответов (+1 за правильный и -1 за неправильный) Массив это и есть таблица умножения где хранятся результаты ответов.И по моему неправильные ответы долбить нужно чаще чем правильные (разве это не так?) Решение я уже где то насчупываю но еще пока нет времени хорошенько подумать. зы Не понял что значит псевдослучайные числа. Это сообщение отредактировал(а) SlaUr - 18.1.2007, 10:02 |
|||
|
||||
| CatATonik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 12.1.2007 Где: Москва Репутация: 6 Всего: 8 |
С математикой тоже беда
Создаешь список элементов массива вида TItem = record Value: Integer; Row: Integer; Col: Integer; end; Сортируешь по значению (Value). Делишь список длиной L на N частей, например 10. Дальше пишешь:
По моему получится то что нужно. Это сообщение отредактировал(а) CatATonik - 18.1.2007, 10:03 |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
CatATonik, пока ничего не понял(алгоритм) будет время обдумаю ваше предложение
|
|||
|
||||
| CatATonik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 12.1.2007 Где: Москва Репутация: 6 Всего: 8 |
Не я бред написал, предложение снимается. Сорри.
Это сообщение отредактировал(а) CatATonik - 18.1.2007, 10:38 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
можно как-нибудь так(сорри, лениво совсем синтаксис расписывать):
1. i = random(9), j = random(9), k = 0 (кол-во "промахов") 2. считаем средний по всей таблице балл, например -10 3. если k > 5(например), то идем на п.5 4. сравниваем X[i,j] со средним баллом - если выше, то инкремент k и идем на шаг 1. 5. заставляем решать выбранное |
|||
|
||||
| CatATonik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 12.1.2007 Где: Москва Репутация: 6 Всего: 8 |
Во, возвращает случайный результат, где 0 <= GetRandom(Range) <= Range, с соответствющим уменьшением вероятности получить Range:
Это сообщение отредактировал(а) CatATonik - 18.1.2007, 12:07 |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
Придумал я свой алгоритм.
1.Числа в массиве 1-100.(ограничить) 2.Условный ноль - 50 3.Правильный ответ -1 , неправильный +1 4.Подсчитываем общее количество очков допустим получилось 1000 5.Создаем временный динамический одномерный массив на 1000 элементов в нем (будут хранится координаты нашего изначального массива) 6 .равномерно распределяем наши набранные очки в динамическом массиве (допустим координаты [5,6] имеет число 60 ,значит в динамическом массиве мы 60 раз равномерно заносим эти координаты) 7.Все Random(1000) - это ответ(координаты вопроса). Думаю что я нашел верный вариант,или будут возражения? Это сообщение отредактировал(а) SlaUr - 19.1.2007, 08:43 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |