Skocz do zawartości

[Szukam] Prostego programiku


Rekomendowane odpowiedzi

Oto Programik :

http://www.sendspace.pl/file/f58aaf756916f19158f196a/losowa1

 

Włączasz programik .exe i wpisujesz liczbę w jakim ma przedziale losować , Klikasz ENTER i wyświetla się liczba.

 

Licze na Like

10. Każdy plik wysyłany na forum, MUSI być wcześniej przeskanowany skanerem online na stronie http://virustotal.com/. Wyniki skanu należy zamieścić w treści posta w postaci screenshota z załączonym plikiem.

W przypadku, gdy waga pliku jest zbyt duża uprasza się o wstawienie do tematu screenshota z przeskanowanym plikiem przez domowe oprogramowanie antywirusowe.

Wstaw skan z pliku.

Usuwam link.

Odnośnik do komentarza
Udostępnij na innych stronach

Losuje liczby z podanego zakresu włącznie.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
 int a,b;
 cin>>a>>b;
 srand(static_cast<int>(time(NULL)));
 cout<<rand() % b + a<<endl;
 cin.sync();//ta linijka
 cin.get();//oraz ta sluzy do zastopowania programu (zamiast system("pause")
 return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

@Up

Trzeba by troche zmienic formule bo jest troszke nieprawidlowa :P

 

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>

using namespace std;

int losujOdDo(int pocz, int kon);

int main(int argc, char const *argv[])
{
int p,k;
srand(time(NULL));
cout << "Podaj licze poczatkowa: ";
cin >> p;
cout << "\nPodaj liczbe koncowa: ";
cin >> k;
cout << endl << losujOdDo(p,k);
return 0;
}
int losujOdDo(int pocz, int kon)
{
return (rand()%(kon-pocz+1))+pocz;
}

void_bit.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

@Utermiko

 

W sumie nie tylko przy takich samich przedzialach bedzie nieprawidlowa formula :P

 

reszta z dzielenia jest zawsze mniejsza od dzielnika

Czyli zastosowanie takie fomuly czesto bedzie prowadzic do bledow:

rand() % b + a<<endl;

 

Przyklad:

a = 7, b = 24

 

Reszta z dzielnie zawsze musi byc mniejsza niz dzielnik

rand()%b

rand()%24

- jezeli w wyniku tego dzialania dostaniemy wynik 18-23 (a mozemy taki otrzymac i czesto otrzymamy) i do tego dodamy 7 to wyjdzie kaszana :)

 

Z ta formula jestesmy bezpieczni:

rand()%(kon-pocz+1))+pocz;

rand()%(24-7+1))+7 == rand()%18+7;

Przy tych samych wartosciach

Maks co mozemy otrzymac z reszty to liczbe mniejsza 18 i do tego dodajemy poczatek przedzialu - czyli max. 17 + 7 - otrzymujemy nasz koniec przedzialu :)

void_bit.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum [Szukam] Prostego programiku   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...