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

Nie rozumiem dzialania randa.

Object Storage Arubacloud
0 głosów
155 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ź 271 wizyt
pytanie zadane 15 października 2017 w Java przez Dawidos01111 Nowicjusz (160 p.)
+2 głosów
1 odpowiedź 344 wizyt
+2 głosów
1 odpowiedź 311 wizyt
pytanie zadane 1 listopada 2017 w C i C++ przez k3ybo4rd Obywatel (1,180 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...