Liczby losowe c++

Liczby losowe c++
KU
  • Rejestracja:około 3 lata
  • Ostatnio:prawie 3 lata
  • Postów:1
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:

Kopiuj
#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)
  {
          
  }


 }
}
edytowany 1x, ostatnio: cerrato
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:13 dni
0
Kopiuj
bool more() {  return warunek; }

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

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
KU
A mógłbyś mi to wyjaśnić?
KU
I jak zrobić żeby losowało jedną z 10 liczb?
_13th_Dragon
Albo umieć je wyliczyć z indeksu (matematycznie) albo wpisać do tablicy i losować indeks tablicy.
F9
  • Rejestracja:ponad 4 lata
  • Ostatnio:dzień
  • Postów:76
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.

Kopiuj
#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;
    }
}
edytowany 1x, ostatnio: cerrato
KU
Dzięki wielkie, a wiesz jak zrobić przy tym kodzie co ja mam, żeby losowało 1 z 10 liczb ? Bo chyba będę wolał zostać przy tym moim.
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:3 dni
  • Postów:289
0

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

Zobacz pozostałe 20 komentarzy
_13th_Dragon
już wszystko zrobiono, wystarczy odpowiednio użyć.
KU
Trzeba coś w tym zmienić? int j == zakresRand(2,1);
_13th_Dragon
Bierzesz dowolny (najkrótszy) kurs C++ czytasz i już nie masz pytań bo sam potrafisz, lub dajesz ogłoszenie w dziale "ogłoszenia drobne" tego forum i podajesz oferowaną kwotę.
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:13 dni
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
JS
  • Rejestracja:około 3 lata
  • Ostatnio:prawie 3 lata
  • Postów:7
1

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

Kopiuj
int j == zakresRand(2,1);

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

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

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

Kopiuj
int j[10];
for(int i = 0 ; i < 10; ++i)
{
  j[i] = zakresRand(2,1);
}
JS
Oczywiście aby wylosować więcej liczb zmieniasz zakres tablicy oraz parametry w pętli for. Jeżeli chcesz podawać ilość liczb do wylosowania podczas działania programu skorzystaj z biblioteki Vector

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.