Portál AbcLinuxu, 28. října 2025 10:13
rand a random, nejprve je však třeba nastavit počáteční hodnotu pomocí srand nebo srandom. Třeba takto:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(0));
cout << "Náhodné číslo od nuly do deseti: " << rand() % 11 << endl;
}
#include <cstdlib>
int genrand(int min, int max)
{
return min+(rand()%(++max-min));
}
Jinak viz rand(3).
(tim si ted nejsu zcela jist, protoze jsem to nezkousel a neznam pouzity algoritmus generovani, ale vetsinou to tak byva). Takze tam muzes hazet treba time().
Zbytek viz man 3 rand() nebo man 3 random().
A ten rozsah nejlepe osetris pomoci modula (zbytek po deleni). Pokud potrebujes rozsah mensi, nez je maximalni hodnota generovana prislusnou funkci, pak ji prozenes modulem. Napr. pro rozsah 0-100 pouzijes rand()%101 (101 je tam proto, ze delis modulo 101, abys dostal 0-100, tedy celkem 101 zbytkovou tridu). Tvuj problem 1-1000 je pak (rand()%1000)+1...
Uff, to byl vycerpavajici vyklad
srand( (unsigned)time( NULL ) );
//typ nahody
boost::ecuyer1988 genType;
//generator nahody s urcenim mezi
boost::variate_generator<boost::ecuyer1988, boost::uniform_int<> >
mujGenerator(genType, boost::uniform_int<>(dolniMez,horniMez));
//generovani hodnot
for (int i = 0; i < 1000; ++i)
cout << mujGenerator() << endl;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.