przypadkowe dzialanie procesora ?



Widzisz wersję archiwalną tematu "przypadkowe dzialanie procesora ?" z forum pl.comp.programming





popo - 26 Lip 2001, 12:36

ostatnio zastanawialem sie chyba nad ciekawym problemem i nie dałem sobie z
nim rady ---zupelnie nie wiem jak osiągnąć programowe losowanie - tak aby
rzeczywiście procesor wybierał losowo element jakiegoś zbioru. moze ktos
dysponuje pomyslem na jakiś algorytmem lub choć opisem na czym mogłaby
polegać losowa praca procesora.


pluton - 26 Lip 2001, 13:44

ostatnio zastanawialem sie chyba nad ciekawym problemem i nie dałem sobie
z
nim rady ---zupelnie nie wiem jak osiągnąć programowe losowanie - tak
aby
rzeczywiście procesor wybierał losowo element jakiegoś zbioru. moze ktos
dysponuje pomyslem na jakiś algorytmem lub choć opisem na czym mogłaby
polegać losowa praca procesora.



Tak, problem rzeczywiscie jest ciekawy.

oraz masa bibliotek programistycznych, implementujacych
rozwiazania opisane w tych ksiazkach.

cul
pluton


Edwardek - 26 Lip 2001, 14:13

zdaje sie, ze procesor sam z siebie nie pracuje losowo
- kazdy skutek w nim powinien chyba miec okreslona przyczyne
a jesli tak nie jest to chyba mamy do czynienia z procesorem
uszkodzonym.....
......bez uzywania skompolikowanych algorytmow, czytania
mnostwa ksiazek losowanie mozna zrobic za pomoca
mikstury jakie czyni czarownica: czyli jedno ucho nietoperza,
dwie nogi zielonej zaby, kropla octu - wszystko do gara,
wymieszac i pobrac lyzka ze srodka . Tlumaczac na komputerowy:
biezesz sobie aktualny czas,
biezesz sobie wartosc jaka moze siedziec gdzies w portach com/lpt
czytasz numery seryjne roznych rzeczy, czas ostatniej modyfikacji
jakiejs systemowej biblioteki, czas instalacji systemu itp itd.....
ilosc ostatnio wcisnietych klawiszy, laczysz to w jakims sobie tylko
znanym zawilym algorytmem i do dziela........ :-) ja tak robilem
w asm padajacy sniezek i wygladalo to b. realistycznie, zadnych
jakichs powtorzen, nie zauwazalo sie zadnych pewnych wzorow
- snieg padal naprawde chaotycznie i b. ladnie - zupelnie jak ten
za oknem!

Marcin 'Qrczak' Kowalczyk - 26 Lip 2001, 15:39


ostatnio zastanawialem sie chyba nad ciekawym problemem i nie dałem sobie z
nim rady ---zupelnie nie wiem jak osiągnąć programowe losowanie



Najczęściej robi się tak, że mamy deterministyczny algorytm generujący
ciąg liczb na podstawie zmieniającego się stanu. Na przykład taki
(pseudokod w stylu Pascala):

    var RandSeed : Word32;
    function Random (N : Integer);
    begin
        Random := RandSeed * (1 shl 32) div N;
        RandSeed := (RandSeed * $8088405 + 1) mod (1 shl 32)
    end;

Ten algorytm (z taką stałą) jest używany w Borland Pascalu
(implementacja musi być trochę inna bo zapis powyżej powoduje
przepełnienie).

Na początku programu RandSeed jest inicjalizowane wartością, która w
jakiś sposób zależy od niepowtarzalnych czynników. W Borland Pascalu
robi to funkcja Randomize, która inicjalizuje RandSeed bieżącym czasem.

Jeśli potrzeba liczb losowych naprawdę dobrej jakości, to można
zaburzać stan losowymi czynnikami częściej. Pod Linuxem są urządzenia
/dev/random i /dev/urandom, z których można odczytywać losowe bajty.
Jądro systemu miesza pulą losowości na podstawie nieprzewidywalnych
danych jak czasy uderzenia klawiatury, dane na portach komputera
albo czas wykonania operacji dyskowych. Ale do większości zastosowań
wystarczają algorytmy pseudolosowe, które potrzebują tylko małego
źródła niedeterminizmu na początku.



Piotr Wyderski - 27 Lip 2001, 10:31


ostatnio zastanawialem sie chyba nad ciekawym problemem i nie dałem sobie
z
nim rady ---zupelnie nie wiem jak osiągnąć programowe losowanie - tak
aby
rzeczywiście procesor wybierał losowo element jakiegoś zbioru.



Hm, to zalezy, co rozumiesz przez "losowo". Jesli wystarczy,
aby otrzymane liczby sprawialy wrazenie losowych, to poczytaj
posty kolegow. Jesli zas chcesz prawdziwej losowosci, to
bez wsparcia sprzetowego sie nie da (np. generator szumu
+ wzmacniacz szumu +bramka Schmitta). Na marginesie, to
chipset i815 ma generator liczb losowych, ale szczegolow nie
znam.

    Pozdrawiam
    Piotr Wyderski


Gayos - 27 Lip 2001, 15:03



aby otrzymane liczby sprawialy wrazenie losowych, to poczytaj
posty kolegow. Jesli zas chcesz prawdziwej losowosci, to
bez wsparcia sprzetowego sie nie da (np. generator szumu
+ wzmacniacz szumu +bramka Schmitta). Na marginesie, to



Otóż da się.
W "Sztuce Elektroniki" jest coś na ten temat. W skrócie:
Cyfrowy generator szumu jest zrealizowany na rejestrze przesuwającym (z we i
wy szeregowym). Niech rejestr ma długość m. Dodatkowa bramka XOR zaczepiona
na wyjściu (m) i pewnym bicie (n) wewnątrz rejestru wytwarza bit, który
podajemy na wejście rejestru. Jeśli odpowiednio dobierze się bit n to dla
rejestru o długości m liczba cykli po którym stan rejestru się powtórzy
wynosi 2^m-1. cytat: "Czas trwania sekwencji pseudolosowej w rejestrze
100-bitowym, taktowanym zegarem 10MHz, byłby milion razy dłuższy niż wiek
wszechświata."
Tak więc nie jest problemem wykorzystanie 3 lub 4 rejestry procesora aby
utworzyć z nich rejestr przesuwny. Problem jest znaleźć odpowiedni bit n.
Dla rejestrów m<40 są podane bity n, ale przy m=39 i n=35 liczba cykli K=
549 755 813 887  Dużo czy mało? Raczej mało jak na dzisiejsze moce
procesorów (dla  10Mips to jakieś 15h)
Warunkiem na uzyskanie maksymalnie długiego ciągu dla szukanego bitu n jest
"nieredukowalność wielomianu 1+ x^n + x^m  -musi on być wielomianem
pierwszym w ciele Galois"    ;-)   Dla mnie czarna magia. Ale może ktoś się
pokusi znaleźć n dla m=96 (3 rejestry procka)?
A w tej chwili to możecie zrobić podany wyżej rejestr dla m=39. To zaledwie
kilkanascie linii w asemblerze.

Konrad 'kaspy' Palczynski - 28 Lip 2001, 09:52


ostatnio zastanawialem sie chyba nad ciekawym problemem i nie dałem sobie z
nim rady ---zupelnie nie wiem jak osiągnąć programowe losowanie - tak aby
rzeczywiście procesor wybierał losowo element jakiegoś zbioru. moze ktos
dysponuje pomyslem na jakiś algorytmem lub choć opisem na czym mogłaby
polegać losowa praca procesora.



Czyzybys zetkna sie z tym problemem co ja, kiedys? Pisalem cos na 51 i
potrzebowalem osiagnac cos w rodzaju niedeterminizmu - uruchamiamy
rownoczesnie ten sam program na obu procesorkach, jeden daje wyniki inne
niz drugi... Niestety, bez zewnecznych uzadzen (IMHO) nie dalo sie tego
osiagnac.


Piotr Wyderski - 28 Lip 2001, 10:38


Otóż da się.
W "Sztuce Elektroniki" jest coś na ten temat. W skrócie:
Cyfrowy generator szumu jest zrealizowany na rejestrze przesuwającym (z we
i
wy szeregowym). Niech rejestr ma długość m. Dodatkowa bramka XOR
zaczepiona
na wyjściu (m) i pewnym bicie (n) wewnątrz rejestru wytwarza bit, który
podajemy na wejście rejestru.



Ale ten LFSR bedzie generowal liczby _pseudolosowe_.
Innymi slowy, znajac budowe ukladu i zawarta w nim liczbe
mozna juz bez najmniejszego problemu wyznaczyc kolejne
wychodzace z niego liczby "losowe". Mi natomiast chodzilo
o prawdziwe liczby losowe, np. powstale ze wzmocnienia
szumow termicznych diody itp.

cytat: "Czas trwania sekwencji pseudolosowej w rejestrze
100-bitowym, taktowanym zegarem 10MHz, byłby milion razy dłuższy niż wiek
wszechświata."



Mozliwe (tzn. nie znam odpowiedniej teorii), ale dlugosc okresu
nie zmienia faktu, ze liczby beda jedynie pseudolosowe, czyli
przewidywalne. Dwa roboty sterowane takimi samymi generatorami,
ktore zainicjowano ta sama wartoscia beda wykonywaly identyczne ruchy.

    Pozdrawiam
    Piotr Wyderski


Marcin 'Qrczak' Kowalczyk - 28 Lip 2001, 15:42


| cytat: "Czas trwania sekwencji pseudolosowej w rejestrze
| 100-bitowym, taktowanym zegarem 10MHz, byłby milion razy dłuższy niż wiek
| wszechświata."

Mozliwe (tzn. nie znam odpowiedniej teorii), ale dlugosc okresu
nie zmienia faktu, ze liczby beda jedynie pseudolosowe, czyli
przewidywalne. Dwa roboty sterowane takimi samymi generatorami,
ktore zainicjowano ta sama wartoscia beda wykonywaly identyczne ruchy.



Jeśli jest tak długi okres, to mogą nie istnieć dwa generatory
zainicjalizowane tymi samymi wartościami.


Piotr Wyderski - 28 Lip 2001, 16:49


Jeśli jest tak długi okres, to mogą nie istnieć dwa generatory
zainicjalizowane tymi samymi wartościami.



Hmm... a to dlaczego? Lutuje sobie dwa identyczne uklady,
wpisuje do nich _ta sama_ wartosc i od tej chwili oba dzialaja
deterministycznie, przy pomocy kartki i olowka moge generowac
wartosci identyczne jak one, bo znam schemat i ziarno.

    Pozdrawiam
    Piotr Wyderski


Marcin 'Qrczak' Kowalczyk - 28 Lip 2001, 18:26


| Jeśli jest tak długi okres, to mogą nie istnieć dwa generatory
| zainicjalizowane tymi samymi wartościami.

Hmm... a to dlaczego? Lutuje sobie dwa identyczne uklady,
wpisuje do nich _ta sama_ wartosc



Po co wpisywać do nich tę samą wartość? Nie mówię, że nie dałoby się
tego zrobić, tylko że to będą dobre generatory jeśli się tego nie zrobi
(o ile one zapamiętują stan między włączeniami zasilania).


Lucifer - 28 Lip 2001, 21:06

Witam

Ale ten LFSR bedzie generowal liczby _pseudolosowe_.
Innymi slowy, znajac budowe ukladu i zawarta w nim liczbe
mozna juz bez najmniejszego problemu wyznaczyc kolejne
wychodzace z niego liczby "losowe". Mi natomiast chodzilo
o prawdziwe liczby losowe, np. powstale ze wzmocnienia
szumow termicznych diody itp.



Wg mnie w tak mozna postapic z kazdym losowym zjawiskiem w przyrodzie -
im wiecej znasz szczegolow na jego temat z tym wieksza dokladnoscia
potrafisz okreslic kolejne zdarzenia. Wiec teoretycznie nic nie jest
losowe i spowodowane innym zdarzeniem, czynnikiem lub czynnikami.

lucifer


Piotr Wyderski - 29 Lip 2001, 07:40







Po co wpisywać do nich tę samą wartość?



Tylko po to, aby pokazac, ze generowane przez nie
liczby w rzeczywistosci nie sa losowe, a calkowicie
deterministyczne, choc rozklad "prawdopodobienstwa"
ich wystepowania moze byc interesujacy.  Dokladniej,
chodzilo o to:

Ja: "Do uzyskania prawdziwej losowosci [na x86]
        potrzeba wsparcia sprzetowego".

Gayos: "Nie potrzeba, wystarczy zasymulowac LFSR"

Ja: "Pokazuje, ze uklad nie generuje liczb prawdziwie
        losowych, a jedynie pseudolosowe"

Nie mówię, że nie dałoby się tego zrobić, tylko
że to będą dobre generatory jeśli się tego nie zrobi



Zgadzam sie. A na marginesie, to czy ktos z Was
zna trudnosc obliczeniowa odtworzenia ziarna
LFSR, jesli sie zna budowe ukladu i dowolny, ale
skonczony ciag wygenerowanych liczb?

    Pozdrawiam
    Piotr Wyderski


Piotr Wyderski - 29 Lip 2001, 07:40

Warunkiem na uzyskanie maksymalnie długiego ciągu dla szukanego bitu n
jest
"nieredukowalność wielomianu 1+ x^n + x^m  -musi on być wielomianem
pierwszym w ciele Galois"



A pytanie jak to stwierdzic jest ciekawe, zadalem je na pl.sci.matematyka.
W moich ksiazkach jest tylko definicja wielomianu nieredukowalnego nad
cialem, ale ani slowa o tym, jak to sprawdzic.

    Pozdrawiam
    Piotr Wyderski

Portale generuja straty bo to dzialalnosc reklamowa a nie dochodowa Re: Wartosc portali
Zone Alarm pod XP - uprawnienia dla Generic Host Process (svchost.exe)
Win2k (SP4): Generic Host Process for Win32 Services - robak?
Odp: openGL
  • telfon komorkowy
  • hymn juventusu
  • xray scanner
  • ksiazki somozy sa niezwykle
  • uw szczecinski
  • tatuaze com pl
  • alergolog
  • czy warto zaktualizowac debiana do wersji
  • copa de la vida
  • Katalog wypowiedzi z for internetowych ^^ Strona Główna