formula za psevdoslu4aini 4isla?
5 отговора
251 прегледа
formula za psevdoslu4aini 4isla?
Ima6e nqkakakva formula za generirane na psevdoslu4aini 4isla nqkoi 6te mi q kajeli?
10x
10x
Re: formula za psevdoslu4aini 4isla?
Ми виж... ако не можеш да използваш функции като srand() и rand() има един супер тъп начин, дето върши чудесна работа ако не го викаш прекалено често.
Взимаш системното време и го правиш на float по някфа формула. Това си го пазиш някъде. После като ти трябва rand число, взимаш текущото системно време, умножаваш го по запазеното и взимаш това, което е след точката. После правиш онова запазеното да е равно на текущото. И така :)
Другия вариант е да си направиш един буфер с примерно 200 клетки, вземаш системното време като float (изрязано до точката) и го пишеш в първата клетка. После го умножаваш примерно по 3 (пак режеш резултата до точката) и го записваш във втората клетка и така, докато напълниш всичките клетки.
Когато ти трябва rand число, взимаш системното време като брой милисекунди и го mod ваш с 200 (systime % 200) и резултата е индекса в таблицата, който трябва да върнеш. Ама ще трябва от време на време да пълниш наново таблицата, щото най-вероятно няма да е кой-знае колко нормално разпределена.
Третия вариант е да се запишеш на курс по 'Теория на хаоса' :))) и там ще ти кажат какво е 'чувствителна зависимост от входните данни'. От там нататък е лесно.
Взимаш системното време и го правиш на float по някфа формула. Това си го пазиш някъде. После като ти трябва rand число, взимаш текущото системно време, умножаваш го по запазеното и взимаш това, което е след точката. После правиш онова запазеното да е равно на текущото. И така :)
Другия вариант е да си направиш един буфер с примерно 200 клетки, вземаш системното време като float (изрязано до точката) и го пишеш в първата клетка. После го умножаваш примерно по 3 (пак режеш резултата до точката) и го записваш във втората клетка и така, докато напълниш всичките клетки.
Когато ти трябва rand число, взимаш системното време като брой милисекунди и го mod ваш с 200 (systime % 200) и резултата е индекса в таблицата, който трябва да върнеш. Ама ще трябва от време на време да пълниш наново таблицата, щото най-вероятно няма да е кой-знае колко нормално разпределена.
Третия вариант е да се запишеш на курс по 'Теория на хаоса' :))) и там ще ти кажат какво е 'чувствителна зависимост от входните данни'. От там нататък е лесно.
И аз да питам
Имаше някакъв алгоритъм за сортиране, някой ще ми го каже ли?
Виж първо това, а после това - на 3-то място има сорс.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Виж първо това, а после това - на 3-то място има сорс.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: formula za psevdoslu4aini 4isla?
Имплементацията в .NET от "Numerical Recipes in C (2nd Ed.)", доколкото разбирам в дъното на цялата работа седи чичко Knuth: [линк]
---
...и аз пиша на кирилица!
---
...и аз пиша на кирилица!
Re: случайни числа
разгледай header файловете на BC++3.1 . мисля че функцията беше в math.h ако не е там продължавай да търсиш 
Re: formula za psevdoslu4aini 4isla?
y[n+1] = (y[n]*A + B) mod C
A, B и C са константи. Нарича се линеен конгруентен метод, а самият генератор се нарича линеен конгруентен генератор. Има условия за стойностите на константите, които можеш да намериш в "Numerical Recipes in твоят_любим_език" на този сайт.
"Всички науки са или физика, или колекциониране на пощенски марки." (Е. Ръдърфорд)
A, B и C са константи. Нарича се линеен конгруентен метод, а самият генератор се нарича линеен конгруентен генератор. Има условия за стойностите на константите, които можеш да намериш в "Numerical Recipes in твоят_любим_език" на този сайт.
"Всички науки са или физика, или колекциониране на пощенски марки." (Е. Ръдърфорд)