generowanie liczb losowych

0

Potrzebuje pomocy w generowaniu liczb losowych z przedziału <mojaZmienna-5;mojaZmienna+5>. Nie odsyłajcie mnie do google.pl bo szukałem wszędzie i znalazłem podobne watki ale nadal nic z tego nie czaje(zazwyczaj podane są tylko rozwiązania bez tłumaczenia;/). C++ uczę się od nie dawna więc proszę o jak najłatwiejsze rozwiązanie z tłumaczeniem.

#include<iostream>
using namespace std;
int main()
{
int mojaZmienna,losowa;
mojaZmienna=10;
losowa=???????;
return 0;
}

Jakiej funkcji użyć w miejsce ??????? aby zmiennej losowa była przypisana liczba z przedziału <mojaZmienna-5;mojaZmienna+5>?

0

Jeśli chcesz bez dodatkowych bibliotek to rand().

0

Wątpię ,że program będzie losował liczbę z przedziału <mojaZmienna-5;mojaZmienna+5>, gdy użyję samo rand(). Czytałem o tej funkcji,ale nie wiem jak jej używać;/

0
#include <cstdlib>
#include <ctime>
//
srand(time(0));
losowa = rand()%11 + moja_zmienna - 5;
0

No fajnie ,ale dla moja_zmienna==5 losowa przyjęła wartość 2088763392... Co może być nie tak? I mimo, że funkcję srand używam tylko raz w programie to wynik zawsze jest taki samy.

0
#include<iostream>
#include <ctime>

using namespace std;

int main()
{
    srand(time(0));
    int x, losowa;
    x = 10;
    losowa = rand()%(x+5) + x - 5;
    cout << losowa;
    cin.sync();
    cin.get();
    return 0;
}
 
 
0

Wynik nadal ten sam;( Hmm a może ktoś mi przedstawi składnie funkcji rand() to sam popróbuję. Czy wygląda ona następująco: rand() % wartosć początkowa + wartość końcowa?

0

Na logikę:
rand() % 11 - przedział <0; 10>
- 5 - przedział <-5; 5>
+ x - przedział <x - 5; x + 5>
Dla ogólnego przypadku byłoby więc tak: rand() % (gornaGranica - dolnaGranica + 1) + dolnaGranica.

0

O dzięki teraz rozum;) lecz wynik nadal identyczny;/będę walczył całą noc z tym a jeśli mi się nie uda to dam juto znać.

0

Koleś, masz coś zwalonego z kompilatorem? Mi wszystko śmiga aż miło!

0

Hmm a może to wina kompilatora... Przetestuje ten kod na innym kompilatorze.

0
mto9 napisał(a)

Hmm a może to wina kompilatora... Przetestuje ten kod na innym kompilatorze.

napisz jak wywołujesz funkcję srand(). ja jak się uczyłem C, to też mi "nie działało", a wynikało to z tego, że wywoływałem srand(0) zamiast srand(time(0))

0

No jak dałeś w kodzie
moja_zmienna==5
To na pewno wynik będzie z d**y. Czemu? Bo == to nie to samo co =

0
Shalom napisał(a)

No jak dałeś w kodzie
moja_zmienna==5
To na pewno wynik będzie z d**y. Czemu? Bo == to nie to samo co =

W kodzie dałem poprawnie moja_zmienna=5;
Na forum napisałem == w skrócie zamiast "równa jest", aż taki głupi nie jestem ;D

Co do generacji liczb losowych już jest wszystko ok, posiadałem kompilator ze szkoły może tam ktoś pogrzebał coś w bibliotekach. Na nowo ściągniętych wszystko ładnie śmiga . Jeszcze raz dzieki;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1