| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Генератор на случайни числа http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2581 |
Страница 1 от 3 |
| Автор: | Ugeen [ Вто Юни 27, 2006 1:41 pm ] |
| Заглавие: | Генератор на случайни числа |
Колеги ,ще ви бъда благодарен ,ако някой от вас ми прати програма на С или Асемблер за PIC16f84,която генерира случайни числа (да може да се задава максималната стойност.На мен ми трябва до 16) ,но без да ги повтаря или да бъдат близки и да включва и "0".Пробвах мои измислени алгоритми с броячи ,но не става добре.Опитах и един код от интернет но също не ми хареса.Целта ми е да получа колкото се може по-голямо разнообразие от числа. |
|
| Автор: | FiTTiLA [ Вто Юни 27, 2006 1:55 pm ] | |||||||||
| Заглавие: | Re: Генератор на случайни числа | |||||||||
На какъв процесор работиш ? |
||||||||||
| Автор: | Ugeen [ Вто Юни 27, 2006 2:11 pm ] |
| Заглавие: | |
Работя с PIC16F84 |
|
| Автор: | denis_hasan [ Вто Юни 27, 2006 2:37 pm ] |
| Заглавие: | |
имаш ли свободен пин на един от портовете. какво значи да не бъдат близки? незнам дали ще се получи ама пробвай все пак ........ значи ако имаш 1 свободен пин го правиш вход, без да му закачаш pullup или pulldown резистори и го четеш тоя вход през фиксиран период от време и шивтваш резултата в една променлива ... веднъж имах подобен проблем бях закачил един бутон на пика ама се беше откачил pullup-а и входа ту ми беше 1 ту 0(съвсем случайно), когато не е натиснат бутона със брояч пак става ама там числата няма да са съвсем случайни |
|
| Автор: | Цецо [ Вто Юни 27, 2006 3:52 pm ] |
| Заглавие: | |
Случайни неща на тоя свят няма. В синхронните системи каквито са микроконтролерите пък съвсем. Това с пина е малко несериозно според мен, защото състоянието му наистина е недефинирано, но пък като забие в едната посока може и там да си остане. А и 1/2 фактор на случайност общо взето е крайно недостатъчно. Достатъчно псевдослучайно може да се получи при брояч и някоя по шашава формула. |
|
| Автор: | Ugeen [ Вто Юни 27, 2006 4:02 pm ] |
| Заглавие: | |
Направих кръгов брояч ,който инкрементва на всяка обиколка през програмата .При натискане на бутон прочитам стойността му,но това не ми хареса никак,защото,в по вечето случаи ми дава едни и същи стойности (повтаря ги по няколко пъти) или крайните стойности и много рядко някъде по средата.Доколкото чета в нета,май това е задача с много повишена трудност,въпреки ,че изглежда проста работа. |
|
| Автор: | Dimitar [ Вто Юни 27, 2006 4:07 pm ] |
| Заглавие: | |
Брояч до 16 доста често ще се повтаря ако питаш мен |
|
| Автор: | evc [ Вто Юни 27, 2006 4:15 pm ] |
| Заглавие: | |
Свободния пин има собствен капацитет и съпротивление. Дори и да ви се струва случайно превключването му, това може да се промени при определени външни влияния, например електрически полета, промяна на температурата и т.н. Тоест свободния пин е "прекалено случаен". Аз бих препоръчал външен генератор, добре екраниран и развързан по захранване. И на честота НЕ кратна на тактовата на процесора. А най-добре таблица със случайни числа на незаетата част от паметта на процесора. Като таблицата се чете при натискане на бутон, без филтър на него. При натискане при всяко притреперване на контакта, процесора ще скача на нова стойност от таблицата и ще се получи доста добра "случайност". |
|
| Автор: | HCL [ Вто Юни 27, 2006 4:24 pm ] |
| Заглавие: | |
Ако има наистина вьзможност за вьншна намеса (бутон примерно) няма нищо по-лесно от един брояч до 16 на по висока честота и готово. Макар че как ли ще се дефинира по-висока честота, повечето от нас не могат да тактуват и на 300Hz Правил сьм си симулатор на зарче с TTL-ки, дори такта се генерираше от 3 NAND-а R и C и чилсата бяха доста случайни |
|
| Автор: | Balkana [ Вто Юни 27, 2006 4:49 pm ] |
| Заглавие: | |
Това което може да пробваш е 4-битова хеш функция върху стойността на таймера и някаква стойност в системата която има случаен или псевдослучаен характер Другото което може да опиташ е някой от цикличните полиноми за CRC - при тях всяка следваща стойност зависи от предишната, и сравнително случайни числа може да получиш по метода дето навремето беше използван в стандартните библиотеки на борланд - инициализираш полинома със някакво число (например взето от таймера) и после няколко пъти цъкаш полинома ... Най-накрая - потърси в гугъла "алгоритъм за получаване на псевдослучайни числа" |
|
| Автор: | zz_stefanov [ Вто Юни 27, 2006 6:24 pm ] |
| Заглавие: | |
Истинската случайност може да дойде само от външна намеса в случаен момент. Иначе няма отърване от повторения на целия пакет псевдослучайни числа. Ползвах онзи генератор от правец 82, и той всяка сутрин ми осигуряваше един и същ начален и редичка от текстове на програмата за радиотелеграфия. Нещата се оправиха когата когато склъпих един безкраен цилъл на теглене на RND, който се прекъсваше от ресета и тогава ми започваше програмата. То се знае че резултата е псевдо случаен, но поне текстовете не бяха запомнящи се Успех |
|
| Автор: | HCL [ Вто Юни 27, 2006 8:39 pm ] |
| Заглавие: | |
zz_stefanov като спомена за тото-то Какьв бил номерьт, вьздушния поток подемал колоната с числа (мисля ше са общо 7 при 6/49) и при последователното вмькване на топките, вероятността да бьдат изтеглени началните и крайните числана всяка колона (1,2,6,7 примерно) била значително по-голяма поради факта, че при разбьркването те най-често оставали по периферията на сферата. Голяма шашма а Някой да е правил статистика на бьлгарското |
|
| Автор: | ToHu [ Вто Юни 27, 2006 8:52 pm ] |
| Заглавие: | |
Ами сигурно не е , но не е труно да се направи, предполагам някъде ги има излезлите числа за последните години. Относно случайните генератори, то как определяш дали работи както ти искаш или не, на колко числа гледаш разпределение. При условие че имащ само от 0-16 то наистина ако генератора генерира само 16 стойности хич не е добре. Има си методи за целта, изпозлва се голямо число коеот се скалира, това е по сигурно. Ако се разчетеш из нета ще намериш, аз преди три четери месеца доста рових по въпроса. Имаи хардуерни чипове, зависи за какво ти трябва. |
|
| Автор: | HCL [ Вто Юни 27, 2006 9:01 pm ] |
| Заглавие: | |
Тони ако не ти представлява проблем, кажи някой чип, Bookmarks ако си правил докато си ровил или го имаш в главата, ще ми е интересно да го видя. |
|
| Автор: | rumen [ Сря Юни 28, 2006 10:19 am ] |
| Заглавие: | ПРОТОН |
Не възможно със математически методи генериране на случайни числа Псевдо случайни да във дълга редица да но повтерението е неминуемо. Ето какво генерира ПРОТОНА на командата RANDOM 26 думички. Псевдо случайно число от 1 до 65535. Можеш да си го обработиш математически за твойте цели. Sorry, but the maximum filesize for all Attachments is reached. Please contact the Board Administrator if you have questions. Неможах да кача 6к. Незнам защо ама не ме и интересува. Ето ти най важната част от файла: 0000000C 00095 PBP#RND = 12 0000000D 00096 PBP#RNDH = 13 0000 00097 ORG 0 0000 2816 00098 GOTO START@ 0001 080D 00099 RN@DM MOVF 13,W 0002 040C 00100 IORWF 12,W 0003 1903 00101 SKPNZ 0004 0A8C 00102 INCF 12,F 0005 3080 00103 MOVLW 128 0006 1A0C 00104 BTFSC 12,4 0007 068D 00105 XORWF 13,F 0008 190C 00106 BTFSC 12,2 0009 068D 00107 XORWF 13,F 000A 188C 00108 BTFSC 12,1 000B 068D 00109 XORWF 13,F 000C 0D0D 00110 RLF 13,W 000D 0D8C 00111 RLF 12,F 000E 0D8D 00112 RLF 13,F 000F 080C 00113 MOVF 12,W 0010 2811 00114 GOTO I@NT 0011 1383 00115 I@NT BCF 3,7 0012 1283 00116 I@NT2 BCF 3,5 0013 1303 00117 BCF 3,6 0014 0000 00118 NOP 0015 0008 00119 RETURN 0016 00120 START@ 0016 00121 MAIN@PROG@START 00008 LIST 00009 0000000E 00010 _A = 14 0000000F 00011 _AH = 15 00000016 00012 F2_SOF EQU $ ; RNADOM.PRP 00000016 00013 F2_EOF EQU $ ; RNADOM.PRP 00000016 00014 F1_SOF EQU $ ; RNADOM.BAS 00000016 00015 F1_000012 EQU $ ; in [RNADOM.BAS] a= Random 0016 2001 00016 CALL RN@DM 0017 008E 00017 MOVWF _A 0018 080D 00018 MOVF PBP#RNDH,W 0019 008F 00019 MOVWF _AH 0000001A 00020 F1_EOF EQU $ ; RNADOM.BAS 00021 LIST 00022 END MPASM 5.01 RNADOM.ASM 6-28-2006 9:49:44 PAGE 2 Протона има и команда SEED за Seed the random number generator, in order to obtain a more random result. Ако искаш да използваш и нея дръпни си го и дерзай. |
|
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|