Kezdőlap › Fórumok › Programozás › C véletlenszám generálás :S
- This topic has 6 hozzászólás, 6 résztvevő, and was last updated 20 years telt el by
roante.
-
SzerzőBejegyzés
-
2005-11-27-12:48 #2039588
Az én idõmben úgy csináltuk, hogy egy 0 és 1 közé esõt generáltunk, aztán felszoroztuk akkorára, amekkora kellett.
2005-11-27-13:25 #2039589Jó.
2005-11-27-13:40 #2039590Szia
Nekem UHU alatt a kódod forgatása közben ezt a warningot dobja:
warning: „RAND_MAX” redefined
In file included from x.c:2:
/usr/include/stdlib.h:129:1: warning: this is the location of the previous definitionLehet , hogy nem lehet felüldefiniálni a headerben levõt ??
Szerintem még építsél be egy if -et ami kordában tartja a számokat.2005-11-27-13:50 #2039591Hi
Már rájöttem, hogyan lehetne megoldani, hogy egy 1 és 52 közötti számot adjon, de nem mûködik megfelelõen. Arra gondoltam, hogy indítok egy for-t 1-52-ig, és kiiratok 0-kat és 1-eseket. Megszámolom az egyesek számát, és így megkaptam a véletlenszámomat.
Az elmélet oké, de nem számolja meg. :((
Itt a kód:Code:#include
#include
#includeint logikaiveletlen() {
return (rand()%2);
}int main() {
int i;
int j = 0;srand(time(NULL));
for(i=1; i2005-11-27-19:05 #2039592A RAND_MAX-ot szerintem sem lehet felüldefiniálni.
A rand() egy 0 és RAND_MAX közé esõ számot aad vissza (a határértékeket is beleértve). Ha 1 és 52 közés esõ szám kell neked, akkor osztással és egy hozzáadással átskálázhatod a tartományt.
Valami ilyesmire gondolok, nagyvonalakban:Code:#define oszto RAND_MAX/51
…
i = rand()/oszto+1;Lehet finomítani.
2005-11-28-15:22 #2039593E!
A RAND_MAX-ot felüldefiniálni szerintem sem túl célravezetõ, én sem nyúlnék ilyen dolgokhoz. Amúgy #undef RAND_MAX, #define RAND_MAX -al menne a dolog.
Ja, meg nálam is dobott ám mindenféle hibákat a fordító, mert pl. a getch()-nak nincs beinklúdolva (szép magyar szó :-)) a curses.h, és ilyenkor nem azt mondja ám, hogy nincs meg, hanem azt, hogy implicit van deklarálva (és persze ez is csak egy warning).
Próbáld a gcc „-W -Wall” kapcsolóival forgatni a progit!
Code:#includeint main(void)
{
int i;
srand((unsigned) time(NULL));
i=(int) (53.0*rand()/(RAND_MAX+1.0));
printf(„szam: %dn”, i);return 0;
}Szerintem ez már megy (a man rand() ból loptam 🙂 ), legalábbis nekem mûködött.
2009-12-04-19:57 #1881566 -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.

legutóbbi hsz