Nie nadążanie komendy srand (time(NULL))

0

Witam, tworze pierwszy amatorski projekt na temat tego czego się nauczyłem (tekstowy rpg)
czuję jakby srand nie nadążał za moim szybkim użyciem switcha w konsoli, a chcę aby wynik za każdym razem był losowy, mogę temu jakoś zaradzić?

#include <iostream>
#include <cmath>

using namespace std;
int wybor;
float variable, cash, cashrand;

int main(){
    for( ; ; ){
     cin >> wybor;
     switch(wybor)
     {
        case 1:
        srand (time(NULL));
        variable = rand() % 25;
        cashrand = rand() % 24 + 1;
        if (variable <= 15){
            cout<< "You found " << cashrand << " crowns";
            cash = cash + cashrand;
        }
        if (variable >= 16){
            if (variable <= 25){
                cout << "You found nothing";
            }
        }
        
       
     }

    }
}


Poniżej wynik konsoli :D

screenshot-20220418233240.png

4
BukJesieni napisał(a):

mogę temu jakoś zaradzić?

Np. nie inicjalizować generatora za każdym razem, albo użyć np. arc4random(3)

6
  1. https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/
  2. jeśli już musisz, to srand powinieneś użyć tylko jeden raz, podczas inicjalizacji, a potem tylko wywoływać rand()
  3. mam wrażenie że jeszcze dość wcześnie na własny RPG, ale życzę powodzenia
4

Przenieś srand (time(NULL)); przed for zaraz za main. srand to Twój seed i powininiem być zawołany tylko raz.

EDIT
Najpierw napisałem odpowiedź i dopiero potem zauważyłem, że @kq już Ci odpisał.

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