Bu yüzden, 1-100 arası 10,000 rastgele sayı üretmeye çalışıyorum, ancak yalnızca 99'a kadar sayı üretiyor çünkü görüntülediğimde yalnızca 1-99 arasında göremiyorum. onu bulmak için kodum. Kodumda neler oluyor, sayıların kaç kez üretildiğini bulmaya çalışıyorum. Temelde bir frekans/histogram.randomizer yalnızca 99 C++ 'ya kadar üretiyor
DÜZENLEME: 100 elde ediyorum, ama onun göstermek değil, ben burada bir hata olsun benim kodudur:
vector<int> vint;
for (int i = 0; i < 10000; i++)
{
int x = (rand() % 100) + 1;
vint.push_back(x);
}
frequency(vint);
void frequency (vector<int> v1)
{
int counter = 1;
int max = 0;
int mode = v1[0];
int numbercheck = 0;
for (int pass = 0; pass < 10000-1 ; pass++)
{
if (v1[pass] == v1[pass + 1])
{
counter++;
numbercheck++;
}
else
{
cout << v1[pass] << ": " << counter << "..................." << endl;
counter = 1;
}
}
Kodunuz bana öyle görünüyor ki, rand() 99 tane üretmemiş olabilir ve bu nedenle 1'inizin eklenmesi işe yaramamış olabilir. Lütfen boyutu artırın ve 100 elde edip edemeyeceğinizi görün. Döngü için üretim için dış işlevdir. – user902384
Unutmayın ki rand() 'çok rasgele değildir, bu yüzden kriptografik olarak rastgele sayılara ihtiyacınız varsa daha iyi bir jeneratör kullanmak isteyebilirsiniz. Bu kodla 0-99 aralığında değerler almalısınız, +1 değeri 1-100'e kaydırmalı, ancak 100 haddeleme 100'lük bir haddedir. Asla 100 almadığınızdan emin olmak için yeterli veri ürettiğinize emin misiniz? Rastgele fonksiyonunuzun dağılımını test ettiniz mi? – tadman
Kodunuz derlenmiyor, ancak kendi kendine yeten, minimal, çalışan bir örnek oluşturmak için kolayca yazabilirsiniz. Lütfen kodunuzu, değişiklik yapmadan çalıştırılabilmesi için düzenleyin. – Richard