| 
    | 
    
    | Re: Сочтут ли за рекламу? Вопрос модератору.   ID:19019   ответ на 18537 | Пт, 28 апреля 2006 23:20 [#] |  |  
	| 
	
	| Jack Daw |  |  (иконки IM)
	Форумы CasinoGames 
 |  |  
    | vano, уточни плиз задачу| vano писал пт, 28 апреля 2006 21:09 |  | Давайте посчитаем вместе сколько можно получить время на один спин тестирования. Возьмем 10000 наборов среди которых ищем самые "отклоненные" и псевоисторию в 100 спинов. 
 Время на каждый спин тестирования будет складываться из
 1. Случайной (на самом деле не совсем случайной, но упростим)генерации 1000*37 пар чисел и проделать это 100 раз
 (так как псевдоистория из 100 спинов.)
 В итоге перед спином мы сформировали псеводисторию. Хорошо если выигрывать будем не на первом же спине. Так как при переходе на второй спин в этом случае не надо перегенерировать историю.
 И ещё есть вторая довольно затратная по времени составляющая на каждый тестируемый спин - это сортировка массива из 10000 элементов.
 
 Итак какое оптимальное значение по времени можно добиться по сумме этих 2-ух операций?
 | 
 
 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
 |  |  |  |