Kezdőoldal » Számítástechnika » Programozás » Hogyan kell generálni 1től...

Hogyan kell generálni 1től 10ig számot?

Figyelt kérdés

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]...



2016. okt. 28. 13:27
 1/9 anonim ***** válasza:

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));}

}

2016. okt. 28. 13:35
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Köszi a válasz ,azonban én még csak pascalban és c-ben programoztam szóval ezt nem nagyon értem,a feladatot is c-ben kell megoldani :/
2016. okt. 28. 13:37
 3/9 A kérdező kommentje:
mármint amit írtál azt nem értem :/
2016. okt. 28. 13:38
 4/9 anonim ***** válasza:
javascriptben a random függvény ad egy 0 és 1 közötti számot, azt hiszem 3 tizedes pontossággal. Ha a kapott értéket megszorzod mondjuk 50-el és kerekted, akkor 0 és 50 között kapsz egész számot. Ezek után a -50 +50-et úgy kapod meg, hogy a 0 és 1 közötti számot 100-al szorzod, kerekíted, majd kivonsz belőle 50-et lényegében ezt csinálja a fenti függvény, csak paraméteresen.
2016. okt. 28. 13:43
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
értem :/ habár ezt így nem tudnám átírni c-be de azért köszi a választ:/
2016. okt. 28. 13:47
 6/9 anonim ***** válasza:
Ha ezt nem tudod megcsinálni c-ben akkor szerintem most hagyd abba. Szó szerint leírta, hogy mit kell tenned
2016. okt. 28. 14:21
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

-.-'.

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.

2016. okt. 28. 14:28
 8/9 anonim ***** válasza:
100%

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);

}

2016. okt. 28. 14:46
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Utolsó köszönöm a válaszodat,sokat segítettél..:)
2016. okt. 28. 15:02

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!