[QT] Losowy int z danego zakresu.

0

Witam, próbuję osiągnąć dwa cele:

  • 'Wiarygodne' losowanie integerów (obecnie za każdym startem programu dostaję te same liczby).
  • j.w. z tym, że losowanie ma odbywać się z podanego zakresu (także ujemnego), np. [-5, 5].

Nie mogę sobie jednak z tym poradzić, random w qt jest jakiś inny ;)

0

Hmmmm, ustawiasz ziarno? Czemu w taki razie nie użyjesz rand z biblioteki C? Jeśli potrzebujesz inny silnik, jak np. Mersenne-Twister to użyj Boost'a.

0

Ujemny zakres możesz zrobić losując dodatkową wartość ( 0, 1 ) i wylosowaną wartość z przedziału ( 0, 5 ) mnożyć razy -1 gdy dodatkowa wartość jest równa 0 ( lub 1 jak tam chcesz ) w innym wypadku pozostawić bez zmian. I już masz razem z liczbami ujemnymi.

0

@blee - LoL a nie prościej (rand() % 10) - 5?

0

@up tes prowda

0

Równie prosto: (rand() % 11) - 5. I co pewien czas wylosujemy 5. ;-)

1
 
#include <QGlobal.h>
#include <QTime>
 
int QMyClass::randInt(int low, int high)
    {
    // losowa liczba pomiędzy low i high
    return qrand() % ((high + 1) - low) + low;
    }
...


// Tworzymy "ziarenko" dla naszego losowania :)
// Te 2 linijki poniżej można wstawić na początku programu
QTime time = QTime::currentTime();
qsrand((uint)time.msec());
 
// tutaj losujemy wartość pomiędzy 0 a 100
int losowaWartosc = randInt(0,100);

Powinno to jakos dzialac:)

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