• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie rozumiem dzialania randa.

Aruba Cloud - Virtual Private Server VPS
0 głosów
215 wizyt
pytanie zadane 29 lutego 2016 w C i C++ przez niezalogowany
#include <iostream>
#include <windows.h>
#include <ctime>
#include <conio.h>

using namespace std;

string login, haslo; //do logowania
int menu, menu2; //menu
int czas, czas_treningu; //czasy treningu
float dodaj_sila;

//WARTOSCI STARTOWE
float zdrowie = 250;
float sila = 1;
float zrecznosc = 1;
float wytrzymalosc = 1;
float pieniadze = 10;

void cs(){
    system("cls");
}

void trenuj_sila(){
    if(sila>=10){
        cs();
        cout << "+ Masz juz maksymalny poziom sily!" << endl;
        Sleep(3000);
    }
    else{
        cout << "+ Czas treningu nie moze przekraczac 9 minut!" << endl;
        cout << "Ile czasu chcesz trenowac (W MINUTACH!): ";
        cin >> czas;
            if(czas>9){
                cs();
                cout << "+ Czas nie moze przekraczac 9 minut!" << endl;
                Sleep(3000);
            }
            else{
            czas_treningu=czas*1; ///DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY DO ZMIANY
        while(czas_treningu>0){
            czas_treningu--;
            system("cls");
            cout << "+ Aktualnie cwiczysz. Musisz poczekac jeszcze " << czas_treningu << " sekund do ukonczenia treningu." << endl;
            cout << "+ Po ukonczeniu treningu otrzymasz ------------------ punktow sily." << endl;
            Sleep(999);
        }
        float random = rand(); 100 + 26;
        sila = sila + (random/100);
        cout << dodaj_sila << endl;
        /*sila=sila+czas;
        system("cls");
        cout << "Trening zakonczony sukcesem! Otrzymales " << czas << " sily." << endl;
        Sleep(3000);*/

            }
        }
}

int main(){
    system("color f");
    cout << "Witaj w symulatorze pakowania bicka!" << endl;
    cout << "Kliknij dowolny przycisk, aby przejsc do gry." << endl;
    getch();
    while(true){
    cs();
    cout << "> SYMULATOR SILOWNI" << endl << endl;
    cout << "+-------------< STATYSTYKI >-------------+" << endl;
    cout << " Ilosc zdrowia: " << zdrowie << endl;
    cout << " Poziom sily: (" << sila << "/10) (sila ataku: 35-50)" << endl;
    cout << " Poziom zrecznosci: (" << zrecznosc << "/10) (szansa na unik: 0%)" << endl;
    cout << " Poziom wytrzymalosc: (" << wytrzymalosc << "/10) (dodatkowe zdrowie: 0%)" << endl;
    cout << " Stan portfela: " << pieniadze << "$" << endl;
    cout << "+----------------< MENU >----------------+" << endl;
    cout << " > 1. Trening" << endl;
    cout << " > 2. Sklep" << endl;
    cout << " > 3. Walki uliczne (+ gold)" << endl;
    cout << " > 4. Walki na ringu (+ respekt)" << endl;
    cout << " > 5. Rzuc wszystko i wyjedz w Bieszczady" << endl;
    cout << " > 6. Wyjscie" << endl;
    cout << "+----------------------------------------+" << endl;
    cout << "> Gdzie chcesz sie udac: ";
    cin >> menu;
        switch(menu){
            case 1:{///trening
                cs();
                cout << "Co chcesz dzisiaj trenowac?" << endl;
                cout << "> Trening: od 0.25 do 1.00 wybranej umiejetnosci/1 minuta" << endl;
                cout << "> 1. Sila" << endl;
                cout << "> 2. Zrecznosc" << endl;
                cout << "> 3. Wytrzymalosc" << endl;
                cout << "> 4. Zakoncz trening" << endl;
                cout << "> Twoj wybor: ";
                cin >> menu2;
                switch(menu2){
                    case 1:{///sila
                        cs();
                        trenuj_sila();
                    break;
                    }
                    case 2:{///zr.

                    break;
                    }
                    case 3:{///wytrz.

                    break;
                    }
                    case 4:{///wyjscie
                    break;
                    }
                    default:{
                        cs();
                        cout << "+ Nie ma takiej opcji... wracasz do menu." << endl;
                        Sleep(3000);
                    break;
                    }
                }
            }
            case 2:{///sklep
            break;
            }
            case 3:{///walki uliczne
            break;
            }
            case 4:{/// walki na ringu
            break;
            }
            case 5:{///bieszczady
                cs();
                cout << "+ Aby wyjechac w Bieszczady potrzebujesz 1000$!" << endl;
            break;
            }
            case 6:{///wyjscie
                cs();
                cout << "Do zobaczenia!" << endl;
                Sleep(1500);
                exit(0);
            break;
            }
        }
    }
    return 0;
}

Ok, na czym polega problem - nie wiem w jaki sposób mam zrobić aby rand w linii ~48 generował (pseudo)losową liczbę od 0.25 do 1.00. Próbowałem zrobić od 25 do 100 i potem podzielić na 100 ale wtedy zawszę dostaję liczbę 41, nie ważne ile minut "treningu" wybiorę. Jakieś porady? Prosiłbym też o napisanie jak mogę zoptymalizować ten kod, np aby nie było ograniczenia 9 minut (chodzi o to, że jeśli zdaży się 9x 1.00 to jest 9+1 wartości startowej wychodzi 10 więc siła wtedy wyniesie 10/10). Bardzo proszę o pomoc :)

2 odpowiedzi

0 głosów
odpowiedź 29 lutego 2016 przez Patrycjerz Mędrzec (192,320 p.)

Użyj funkcji srand (cstdlib) z jakimś zmiennym ziarnem (argumentem), np. wartością zwracaną przez funkcję time (ctime):

srand(time(nullptr));

Wywołaj taką funkcję raz, przed użyciem funkcji rand.

komentarz 29 lutego 2016 przez niezalogowany
Dobra - przeoczyłem, bo randa brałem ze starego projektu ;) wielkie dzięki
0 głosów
odpowiedź 1 marca 2016 przez criss Mędrzec (172,590 p.)

Dość często tym filmikiem rzucam po forum :D

https://www.youtube.com/watch?v=u43y_WE52Ig

Poza tym jest jeszcze kilka filmów na kanale Gynvaela poświęcone liczbom (pseudo)losowym.

Podobne pytania

0 głosów
1 odpowiedź 331 wizyt
pytanie zadane 15 października 2017 w Java przez Dawidos01111 Nowicjusz (160 p.)
+2 głosów
1 odpowiedź 555 wizyt
+2 głosów
1 odpowiedź 365 wizyt
pytanie zadane 1 listopada 2017 w C i C++ przez k3ybo4rd Obywatel (1,180 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...