Liczby losowe c++

0

Dobry wieczór, chciałbym się dowiedziec jak zrobić aby np. wylosowało 10 liczb lub więcej. Na dole jest przykładowy kod:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;
int zakresRand (int maksimum, int minimum)
{
  return rand() % (maksimum - minimum +1 ) + minimum;
}

int main()
{
  srand(time (NULL));
  for ( int i = 0; i < 1 ; ++i)
  {
      int j == zakresRand(2,1);
      if (j == 2)
      {
          
  }
  if (j == 1)
  {
          
  }


 }
}
0
bool more() {  return warunek; }

for(int i=0;(i<10)||(more());++i) rand();
1

Nie wiem na jakim etapie edukacji jesteś ale skoro w tytule jest C++ to spróbuj to rozwiązać w stylu C++, a nie w stylu C. Polecam użyć headera random, poniżej wklejam przykładowy kod. Na początku można się trochę pogubić np. z wyborem silnika do generacji liczb losowych ale dla zdecydowanej większości przypadków takie rozwiązanie jest wystarczające i nie wymaga wgłębiania się w matematyczne szczegóły.

#include <iostream>
#include <random>

int main()
{ 
    std::random_device rd;
    std::mt19937 generatorEngine{rd()};

    int start = 0;
    int end = 100;
    std::uniform_int_distribution<int> dist{start, end};
    for (int i = 0; i < 10; i++)
    {
        std::cout<<dist(generatorEngine)<<std::endl;
    }
}
0

@kubakubakubakubakuba:
Co rozumiesz przez "losowanie 1 z 10 liczb" ? Podaj przykład.

0

@kubakubakubakubakuba: a czym ci nie pasuje funkcja zakresRand (oprócz degeneratywnej nazwy oczywiście)?

1

Cześć. Kodu nie testowałem ale stawiam, że już tutaj masz problem

int j == zakresRand(2,1);

używasz == co jest operatorem porównania a nie przypisania. Zamień na

int j = zakresRand(2,1);
cout << j <<endl;

Aby losować 10 liczb musisz wykorzystać pętlę for oraz tablice.

int j[10];
for(int i = 0 ; i < 10; ++i)
{
  j[i] = zakresRand(2,1);
}

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