Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26305
Рейтинг: 2146
#31: 2010-12-20 16:53:02 ЛС | профиль | цитата
301992 писал(а):
а если программа будет работать из под ДОСА, это наверное еще придаст ей скорости?

А что это за программа-то такая, котора требует такой огромной скорости обработки в RealTime-e
карма: 22

0
Ответов: 96
Рейтинг: 1
#32: 2010-12-20 17:29:39 ЛС | профиль | цитата
Данная программа должна выполнять много расчетов. Например для длины последовательности 32символа колличество таких последовательностей для сравнения 2^32, т.е. много, а для 64 и 128 вообще ... Можно конечно сделать так на примере последовательности 32 символа. всего комбинаций 2^32 (от 0 до 2^32), но можно все не перебирать, а взять достаточно большое количество комбинаций из всего полегона чисел равномерно (немного вначале, потом ближе к середине, потом еще где-нибудь, ну и в конце). Но я не знаю как это можно сделать не сгенерировав полное количество комбинаций.


У компонента RND есть точка doRandomWithoutRepeats (Генерирует неповторяемую последовательность случайных целых чисел), т.е. как я понял все числа в определенном диапазоне, но если бы можно было генерировать не все числа а некоторую выборку, достаточно равномерно распределенную по диапазону, то для меня было бы самое оно.


Все это нужно для наработки статистики, но при этом, чтобы не ставить компьютер на несколько дней для вычисления. Что-то написал так, что сам с трудом понимаю.
карма: 0

0
Ответов: 758
Рейтинг: 112
#33: 2010-12-20 17:59:04 ЛС | профиль | цитата
Насколько я понял, то можно сделать так
code_21873.txt
------------ Дoбавленo в 17.59:
301992 писал(а):
но можно все не перебирать, а взять достаточно большое количество комбинаций из всего полегона чисел равномерно

Если нужно равномерно, то вот

Add(MainForm,2953706,196,147)
{
Width=290
Height=485
}
Add(Button,5132092,252,140)
{
Left=10
Top=10
link(onClick,2037862:doEvent1,[])
}
Add(ListBox,7110019,616,245)
{
Left=10
Top=35
Width=265
Height=410
}
Add(Edit,12489401,413,70)
{
Left=80
Top=10
Text="64"
}
Add(For,2897958,336,168)
{
End=100000
link(onEvent,12758910:doRandom,[])
link(onStop,12461128:doEvent1,[(381,181)(381,209)])
}
Add(Random,12758910,427,168)
{
Min=-64
Max=64
Point(Min)
Point(Max)
Point(doMin)
Point(doMax)
link(onRandom,799483:doAdd,[])
link(Min,4069639:Result,[(433,162)(412,162)])
link(Max,9073653:Var3,[(440,110)])
}
Add(ArrayCountRepeats,11460842,518,245)
{
ArrayType=1
link(onCount,4255559:doStr,[])
link(Array,3886130:ArraySort,[])
}
Add(IntegerArray,15260911,476,98)
{
IntArray=[]
}
Add(ArrayRW,799483,476,154)
{
link(Array,14022754:Var2,[])
}
Add(Hub,12461128,490,203)
{
link(onEvent1,3886130:doSort,[])
link(onEvent2,11460842:doCount,[(511,216)(511,251)])
}
Add(ArraySort,3886130,518,203)
{
ArrayType=1
link(Array,14022754:Var3,[(524,138)])
}
Add(MT_String,4255559,567,245)
{
link(onResult,7110019:doAdd,[])
}
Add(Math,4069639,406,124)
{
OpType=1
ResultType=0
link(Op2,9073653:Var2,[])
}
Add(Hub,2037862,301,140)
{
OutCount=5
link(onEvent1,4069639:doOperation,[(327,146)(327,130)])
link(onEvent2,15260911:doClear,[(465,153)(465,118)])
link(onEvent3,7110019:doClear,[(324,160)(324,286)(606,286)(606,258)])
link(onEvent4,13425002:doEvent1,[(390,167)(390,188)])
link(onEvent5,2897958:doFor,[])
}
Add(GetDataEx,9073653,413,105)
{
link(Data,12489401:Text,[])
}
Add(GetDataEx,14022754,476,133)
{
link(Data,15260911:Array,[])
}
Add(Hub,13425002,399,182)
{
link(onEvent1,12758910:doMin,[])
link(onEvent2,12758910:doMax,[])
}

карма: 1

0
файлы: 1code_21873.txt [2.3KB] [168]
Ответов: 8961
Рейтинг: 824
#34: 2010-12-20 18:44:11 ЛС | профиль | цитата
301992,
301992 писал(а):
2^32, т.е. много, а для 64 и 128 вообще
если это не подбор паролей, обрисуйте задачу почётче, может сообща что-нибудь придумаем для уменьшения количества вычислений
карма: 19

0
Ответов: 96
Рейтинг: 1
#35: 2010-12-20 19:06:40 ЛС | профиль | цитата
miver, схемы интересные, но мне не надо генерировать числа типа -64, -60, ..., 64 моя программа работает с последовательностями типа
1010001010110101
0100001000111100
мы имеем
1110000010001001 = -1+-1+-1+1+1+1+1+1+-1+1+1+1+-1+1+1+-1 = 4 (пример для последовательности 16 элементов) и так много раз. А потом смотрим сколько и каких значений появилось.


Я просто хотел предложить сделать генератор Rnd или вставить функцию в имеющийся, который делает следующее.
последовательность из 32 элементов (0 и 1) имеет около 4 миллиарда неповторяющихся комбинаций (чисел, если рассматривать в десятичном виде). Если все обрабатывать, можно повешаться. Я предлагаю сделать функцию, которая позволит сгенерировать 1 или 2 миллиона неповторяющихся чисел из диапазона (0 - 4 миллиарда), но чтобы числа брались равномерно из этого диапазона (немного из диапазона малых чисел, немного из середины и т.д.)
------------ Дoбавленo в 19.06:
Леонид писал(а):
если это не подбор паролей, обрисуйте задачу почётче, может сообща что-нибудь придумаем для уменьшения количества вычислений


Это нужно для исследования Автокорреляционных и взаимокорреляционных свойств шумоподобных сигналов разной длины 32, 64, 128. Генератор М-последовательности из другого поста, нужен для этого же. Но сейчас не о нем.

последовательность 32 имеет 2^32 неповторяющихся комбинаций
последовательность 64 - 2^64
последовательность 128 - 2^128

А это очень большие числа.
карма: 0

0
Ответов: 8961
Рейтинг: 824
#36: 2010-12-20 19:17:14 ЛС | профиль | цитата
301992, вот Вам генератор заданного количества случайных чисел от 0 до 2^31-1 code_21876.txt
карма: 19

0
файлы: 1code_21876.txt [1003B] [154]
Ответов: 96
Рейтинг: 1
#37: 2010-12-20 19:24:24 ЛС | профиль | цитата
Леонид писал(а):
вот Вам генератор заданного количества случайных чисел от 0 до 2^31-1 code_21876.txt


Интересная схема.
Попробую применить, но область малых значений не генерируется
карма: 0

0
Ответов: 8961
Рейтинг: 824
#38: 2010-12-20 21:10:55 ЛС | профиль | цитата
301992,
301992 писал(а):
область малых значений не генерируется
это что иметь ввиду под "область малых значений" -- если от 0 до 1000, то из миллиона случайных значений сюда попадут (1000/2 150 000 000)*1 000 000~0.4 штуки
карма: 19

0
Ответов: 4664
Рейтинг: 767
#39: 2010-12-21 11:22:55 ЛС | профиль | цитата
Может для подобных целей можно использовать класс TBits (массив битов) из KOL? Только нужно, наверное, добавить арифметику.
карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#40: 2010-12-21 16:02:11 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-02-25 16:47:13
карма: 0

0
40
Сообщение
...
Прикрепленные файлы
(файлы не залиты)