logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Generowanie liczb losowych w zadanym przedziale.

qmpel 24 Sty 2005 13:24 28868 4
REKLAMA
  • #1 1165076
    qmpel
    Poziom 16  
    Posty: 122
    Pomógł: 24
    Ocena: 6
    Hey !!

    Mam prośbę, czy mógłby mi ktoś podać funkcję napisaną w C/C++ na generację liczby całkowitej z przedziału np. od 5 do 16 ??

    Pozdrawiam !!

    Zamykam. - arnoldziq
  • REKLAMA
  • Pomocny post
    #2 1165109
    wddf
    Poziom 18  
    Posty: 192
    Pomógł: 26
    Siemka, nie wiem jak to jest w C, ale np. w pascalu robi sie to tak:
    liczba:=random(16);

    podaje on losowa od 0 do 16, mozna zrobic petelke ktora eliminuje mniejsze od 4, sadze ze w c jest bardzo podobnie musisz znalec tylko odpowiednik "random", powodzenia
  • REKLAMA
  • Pomocny post
    #3 1165287
    Bielsky
    Poziom 21  
    Posty: 333
    Pomógł: 30
    Ocena: 19
    
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[])
    {
      int i;
      srand(time(0));
      // %12 bo zakres ma 12 liczb
      //5 bo najniższa to 5
      i = rand()%12 + 5;
      printf("%i\n",i);  
      system("PAUSE");	
      return 0;
    }
    
  • REKLAMA
  • Pomocny post
    #4 1165310
    Paweł Es.
    VIP Zasłużony dla elektroda
    Posty: 6981
    Pomógł: 1236
    Ocena: 692
    int x;
    
    x=5+(rand() % 12);


    Ogólnie: generowanie liczb całkowitych z zakresu <a..b> gdzie b>a
    
    x=a+(rand() % (b-a+1)); // prosta metoda ale korzysta z małej ilości
                                          // bitów i liczby są "średnio" losowe.
    druga metoda (lepsza):

    x = a + int((b-a+1) * rand()/(RAND_MAX+1.0));
  • #5 1165403
    qmpel
    Poziom 16  
    Posty: 122
    Pomógł: 24
    Ocena: 6
    Hey !!

    Dziękuję, Dziękuję, Dziękuję, !!

    Pozdrawiam !!
REKLAMA