Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[LPC2138][C/Keil] Losowanie liczby z przedziału

kamil_lk 12 Gru 2011 11:02 1729 2
  • #1 12 Gru 2011 11:02
    kamil_lk
    Poziom 8  

    Witam.

    W jaki sposób mogę wylosować liczbę z zakresu <0,256>.

    Próbowałem takiej instrukcji:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Lecz wywala mi jakieś błędy odnośnie funkcji rand() mimo iż dołączyłem bibliotekę stdlib.h

    Czy w programowaniu ARM-ów jest jakaś funkcja odpowiadająca za losowanie liczby?

    0 2
  • CControls
  • #2 12 Gru 2011 12:21
    michcior
    Poziom 30  

    Prosty sposób to użyć jakiegoś timer'a a bardzo szybkim zegarze. Można tak zrobić jeśli korzystanie z liczby losowej jest sporadyczne i nie skorelowane w czasie. Np, naciśnięcie przycisku przez użytkownika.
    Funkcje biblioteczne są pseudolosowe. Zawsze dają taką samą sekwencję jeśli są "posiane" takim samym "ziarnem". Dlatego "do posiania" wykorzystuje się jakieś inny losowy czynnik, np. odczyt z przetwornika ADC.

    ARM to sam CPU. Generator liczb losowych, jeżeli jest, nie należy do CPU tylko do konkretnego SoC. Zwykle w tych tłuściejszych układach są takie generatory.

    0
  • CControls
  • #3 28 Gru 2011 14:27
    kamil_lk
    Poziom 8  

    Odświeżam.

    W linku projekt w programie Kail - Link.

    Wersja GNUARM - Link

    Poniżej przedstawiam co zawiera biblioteka stdlib w tej wersji GNUARM

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Poniżej sam program w c w którym jest funkcja losuj() wywoływana podczas naciśnięcia przycisku, a w niej przypisanie do zmiennej cou RAND_MAX.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jak mam przypisać do zmiennej cou losową liczbę zamiast RAND_MAX?
    Próbowałem tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    lecz wtedy wywala mi error: undefined reference to `rand'.

    0