C++ bir Vector'den her seferinden farkli bir elemanı rastgele çekmek

Vector size limitine göre bir rastgele sayı oluştur. Örnek vermek gerekirse vector de 10 eleman var random sayı ile 0, 9 arası sayı al ve gelen index değerine göre elemanı çek.
 
Farklı yolları var. En kolayı time seed ile rand() fonskiyonu kullanarak random sayılar döndürebilirsiniz.

Eğer doğru anladıysam her defasında vektörden farklı değerin gelmesini istiyorsunuz.

C++:
#include <iostream>
#include <vector>

using namespace std;

int randomGenerator(const  vector<int>& vec) {
    if (vec.empty()) {
        throw runtime_error("Vector ici bos!");
    }

    srand(time(0));

    int randomIndex = rand() % vec.size();
    return vec[randomIndex];
}

int main() {
    vector<int> vectorlar = {1, 2, 3, 4, 5, 12,23, 43, 543, 6, -2, 32, 33, 333}; // burada inputla dinamik input ekleyebilirsin

    int randomValue = randomGenerator(vectorlar);
    cout << randomValue << endl;

    return 0;
}

Burada randomGenerator() fonksiyonu bir tane vector alıyor ve içi boşsa hata döndürüyor. Dolu vektörde ise random bir değeri çağırıyor.

Bu timestamp seedi yöntemi ile yapılmış random generator. Daha gelişmiş ve farklı algoritmalara dayanan random generatorlar olabilir.
 
shuffle et, sirayla cek.
Tekrarli eleman varsa set ile unique vektor elde edip sonra shuffle et.
 
Son düzenleme:

Geri
Yukarı