Hogyan kell generálni 1től 10ig számot?
a kérdés még úgy van nehezítve ,hogy -50től +50ig.
Persze véletlen számokra gondoltam és ezzel az algoritmussal kéne megoldani:srand(time(0); for{T[i]...
a függvény alapján c++ a programnyelv, azt nem ismerem, de gondolom a függvényben nem lehet megadni intervallumot, különben simán meg tudnád csinálni. Szóval... js-ben valahogy így néz ki. Ez alapján szerintem meg tudod csinálni.
function randomNumber(min,max,dec){
var args = arguments.length;
if(args < 3) {dec = 0;}
if(args < 2) {max = 2147483647;}
if(args < 1) {min = 0;}
return(roundNumber((((max-min)*Math.random())+min),dec));
}
function roundNumber(num,dec){
if (num == undefined) {console.log('A kerekítendő szám nincs megadva');return(1);}
if (dec == undefined) {dec = 0;}
if (dec == 0) {return(Math.round(num));}
else {return(Math.round(Math.pow(10,dec)*num)/Math.pow(10,dec));}
}
-.-'.
T[i]=rand()%50+1 ,ezzel megvan ,hogy csak 50ig menjen de azt hogy írjam bele ,hogy -50től mert így 0tól nézi 50ig.
Naszóval... Ez elég leereszkedő magyarázat lesz, ezért lesz 0%-ra értékelve.
Először is, ciklust gondolom tudunk írni:
int i;
for (i = 0; i < 10; i++) {
...
}
Mert ugye 10 darab szám kell.
Véletlenszámot a rand() függvénnyel tudsz gyártani. Ez egy 0 és egy bizonyos RAND_MAX makróban meghatározott érték közt ad egy számot véletlenszerűen. De az garantálva van, hogy ez a szám legalább 32767. Magyarra fordítva ugye sokféle fordító létezik, van Clang, GCC, stb, és ez a RAND_MAX értéke mindegyiknél más.
int i;
for (i = 0; i < 10; i++) {
.. int szam = rand();
.. printf("%d ", szam);
}
Két dolgot figyelhetsz meg:
1) Akárhányszor indítod el a programot, mindig ugyanazokat a számokat fogja adni ugyanabban a sorrendben. Ez azért van, mert nem adtunk meg semmi olyan dolgot, ami alapján változhatna. Nos, a rendszeridő az mindig változik, így a ciklus elé tegyél be egy ilyet:
srand(time(NULL));
2) Nekünk nem 0..32767 közt kell számokat gyártani, hanem -50 és +50 közt. Ezt átfogalmazhatjuk úgy is, hogy 0 és 100 közt gyártunk számokat, majd kivonunk belőle 50-et. Oké, de akkor 0 és 100 közt hogy tudunk számokat gyártani? Nos, a rand() által dobott számot osztjuk 101-el (mert ha 100-zal osztod, 0 és 99 közt dobál számokat) és megnézzük, mennyi a maradék.
srand(time(NULL));
int i;
for (i = 0; i < 10; i++) {
.. int szam = rand() % 101 - 50;
.. printf("%d ", szam);
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!