Просмотреть всю тему "Сочтут ли за рекламу? Вопрос модератору." »»
Re: Сочтут ли за рекламу? Вопрос модератору.   ID:19019   ответ на 18537 Пт, 28 апреля 2006 23:20 [#]
Jack Daw Форумы CasinoGames
vano писал пт, 28 апреля 2006 21:09
Давайте посчитаем вместе сколько можно получить время на один спин тестирования. Возьмем 10000 наборов среди которых ищем самые "отклоненные" и псевоисторию в 100 спинов.

Время на каждый спин тестирования будет складываться из
1. Случайной (на самом деле не совсем случайной, но упростим)генерации 1000*37 пар чисел и проделать это 100 раз
(так как псевдоистория из 100 спинов.)
В итоге перед спином мы сформировали псеводисторию. Хорошо если выигрывать будем не на первом же спине. Так как при переходе на второй спин в этом случае не надо перегенерировать историю.
И ещё есть вторая довольно затратная по времени составляющая на каждый тестируемый спин - это сортировка массива из 10000 элементов.

Итак какое оптимальное значение по времени можно добиться по сумме этих 2-ух операций?
vano, уточни плиз задачу

1)тебе нужно 100 одномерных массивов размером 37000
2)Элементы массива от 0 до 36 включительно
3)Массивы упорядочены по возрастанию

Неясно понятие "пара чисел", как пары можно сортировать? По сумме? По первому значению?

Правильная постановка задачи есть ключ к успеху.

Для задачи из первых трёх пунктов может использовать такой алгоритм (генерит 100 серий мгновенно)

Private Results(1 To 100, 1 To 37000) As Long '100 упорядоченых серий - искомый результат
Private tmpResults(1 To 100, 0 To 36) As Long 'счётчики: сколько раз выпало каждое число за серию

Public Sub main()
Dim i1 As Long, i2 As Long, i3 As Long, tmp As Double

For i1 = 1 To 100
For i2 = 1 To 370
Randomize
For i3 = 1 To 100
tmp = Int(Rnd(i3) * 37) 'генерация числа от 0 до 36
tmpResults(i1, tmp) = tmpResults(i1, tmp) + 1 'увеличение соответствующего счётчика на единицу
Next i3
Next i2
i3 = 1
For i2 = 0 To 36
For i3 = i3 To i3 + tmpResults(i1, i2) - 1 'добавляем в последовательность число столько раз, сколько сумма на счётчике
Results(i1, i3) = i2
Next i3
Next i2
Next i1
End Sub