Şimdi Ara

c++ belirli bir kümeden rastgele bir sayı seçme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
4
Cevap
0
Favori
1.412
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar c++ ta proje ödevim var varmısın yokmusun programını oyuna çevireceğim ama şimdi varmısın yokmusunda miktarlar belli ama kutulara rastgele yerleştiriliyor ben bir türlü yazamadım bu kodu mesela 1tl 10tl 100tl olsun bunlardan herhangi birini bir kutuya diğerini diğer kutuya yerleştirmek istiyorum.

    Özet:Belirli sayılardan rastgele farklı sayı nasıl seçebilirim .Teşekkürler



  • Benim gördüğüm daha önce seçilmemiş bir sayı seçilene kadar random çalıştırılıyor while ile.
    Benim şahsen tercih edeceğim yöntem değil. Pek verimli olduğu söylenemez.

    Ben şahsen şöyle yaparım :
    N tane paran olsun.
    int rand[N] = {0, 1, 2, 3, ..., N-1} kaç TL'n var ise bu uzunlukta bir liste olur.

    int para[N] = {1, 10, 50, 100, 1000, 10000, ...} N tane para da ayrı listede tutulur.

    rand arrayini shuffle yaparım. Yani sırasını rasgele değiştiririm. Mesela N = 5 ise
    rand = [3, 0, 4, 1, 2] gibi bir arraya dönüşebilir.

    daha sonra tek bir loop içinde:

    for(int i = 0; i < N; i++)
    {
    secilenPara = para[ rand{i} ]; // {} -> [] olacak. görünmediği için böyle yazdım.
    // var mısın yok musun
    }
    Böyle bir mantıkla ilerlenebilir.



    < Bu mesaj bu kişi tarafından değiştirildi yesil1026 -- 9 Nisan 2019; 9:53:48 >
  • C++ kullanabiliyorsan, elinde birçok imkan ve araç var demektir.

    C++ Standard Template Library çok güçlü hazır veri yapıları sunuyor. Bunlardan biri "vector". Vector veri yapısı aslında dinamik bir dizi. Dinamik olmasının güzelliği, çalıştırma sırasında veri ekleme silme yapılabiliyor olması. Tüm hafıza yönetimini de kendisi arka planda hallediyor. Sana da tertemiz kullanmak kalıyor.


    #include <iostream>
    #include <vector>

    int main() {

    int moneyArray[] = {1, 5, 10, 10, 10, 50, 50, 100};
    std::vector<int> a( moneyArray, moneyArray + sizeof(moneyArray)/sizeof(int)); // paraların bulunduğu vector
    std::vector<int>::iterator it; // vectorü gezebilen bir obje. Index gibi düşün.

    int randomValueFromContainer;

    srand(time(NULL));

    while(a.size()) { // Vector dolu olduğu sürece
    it = a.begin(); // Indexi vectorün başını gösterecek şekilde ayarla
    std::advance(it, rand() % a.size()); // Indexi random sayı kadar ilerlet

    randomValueFromContainer = *it; // Index üzerinde dereferans işlemi, vectorde gösterdiği datayı verir
    std::cout << randomValueFromContainer << std::endl;

    a.erase(it); // Indexin gösterdiği veriyi vectorden sil.
    }

    }





  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.