Προς το περιεχόμενο

C++-Random Numbers


CodeMan

Προτεινόμενες αναρτήσεις

Δημοσ.

Paste apo to MSDN.

 

The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand

 

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

 

void main( void )

{

int i;

/* Seed the random-number generator with current time so that

· the numbers will be different every time we run.

*/

srand( (unsigned)time( NULL ) );

/* Display 10 numbers. */

for( i = 0; i < 10;i++ )

printf( “ %6d\n”, rand() );

}

Output

 

6929

8026

21987

30734

20587

6699

22034

25051

7988

10104

Δημοσ.

file codeman, i apadisi einai poly apli arkei na to skefteis ligo...

an thes random arithmous metaxy tou arithmou x kai tou arithmou y (opou x<y) kaneis to exis :

 

result = y - random(x)

 

den hreiazesai kapoia alli synartisi

Δημοσ.

An katalaba kala,8eleis tyxaioys ari8moys metaksy 1 kai 13. Pisteyw oti ayto 8a kanei thn doyleia :

 

int y;

y=1+rand()%13;

 

Dvs wrote :

Diairese ton aritmo pou tha pareis apo tin sinartisi me to 14

 

File Dvs,an gia paradeigma h synarthsh epistrepsei 280, tote 280/14=20>13.

filika opaque :D

Δημοσ.

to ipoloipo tha parei re paidia :)

to ipoloipo tha einai panta mikrotero apo ton aritmo pou to diaireis! Mathimatika dimnasiou re paidia!

P.x

10/5 = 2 ,0 <5

11/5 = 2 ,1 <5

12/5 = 2 ,2 <5

13/5 = 2 ,3 <5

14/5 = 2 ,4 <5

15/5 = 3 ,0 <5

Δημοσ.

>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int     iIndex;

int main()
{
 /* TODO: Connect rand with PC clock */
 srand( (unsigned) time(NULL) );

 /* TODO: Generate random numbers from 1 to 13 */
 for(iIndex=0;iIndex!=13;iIndex++)
  {
    /* TIP: rand()%14<- rand()+Maximum_Number+1 */
    printf("%d\n",rand()%14);
  }
}

 

>
Output:
9
2
6
0
11
1
8
13
13
11
3
10
3

 

Υ.Γ. Περί random & randomize αντί srand & rand

 

1ον)Η ρουτίνα randomize δεν υπάρχει διότι ουσιαστικά είναι ένα “micro” στην srand( (unsigned) time(NULL) );. Ορισμένες C την παρέχουν (πχ. Borland Turbo C, Borland C Compiler κοκ) ενώ κάποιες άλλες όχι (πχ. Microsoft C 6.00 for DOS).

 

TIP: Αν θες να αυξήσεις την απόδοση τυχαίων αριθμών, μπορείς να ρυθμίσεις την srand ως ( (unsigned) GetTickCount() ); αν προγραμματίζεις στα Windows :)

 

2ον) Το ίδιο συμβαίνει και με την ρουτίνα random όπου μπορεί να αντικατασταθεί (αν δεν υπάρχει) με τον τύπο srand()% +1 από την ανώτερη επιθυμητή τιμή (αν θέλουμε ως 13 rand()%14 αν θέλουμε ως το 15 τότε rand()%16 κοκ..)

 

 

Καλή τύχη.

Δημοσ.

result = y - random(x)

 

codeman otan egrapsa to parapanw den to egrapsa san edoli...

vlepeis kana ";" sto telos ?

 

ektos aftou kalitera na xereis prin miliseis..

edoli random yparhei kai hrisimopoieitai mazi me tin randomize();

 

>
random     <STDLIB.H> 

Macro that returns an integer 

Declaration

Macro:
-	random(num);  

Function:
-	int random(int num); 

Remarks

random returns a random number between 0 and (num - 1). 

random(num) is a macro defined in STDLIB.H. 

Return Value

Returns an integer between 0 and (num - 1). 

 

tsiou

Δημοσ.

Se Borland gia 1-13,

den xreiazete na kanoume ta pragmata periploka

#include<iostream.h>

#include<iomanip.h>

#include<conio.h>

#include<stdlib.h>

 

void main()

{

int i;

clrscr();

randomize();

for(i=1;i<=40;i++)

cout<<random(13)+1<<endl;

getch();

}

Δημοσ.

pes ta re ee3509..................................mia apli random() se borland c++ 5.02

 

#include <stdlib.h>

int random(int num);

 

Description

 

Random number generator.

random returns a random number between 0 and (num-1). random(num) is a macro defined in stdlib.h. Both num and the random number returned are integers.

 

Return Value

 

random returns a number between 0 and (num-1).

Δημοσ.

Όταν λέμε ότι οι ρουτίνες randomize & random δεν υπάρχουν εννοούμε ότι δεν συμπεριλαμβάνονται στις ρουτίνες ANSI C οπότε οι κατασκευαστές C compilers δεν υποχρεούται να τις συμπεριλάβουν στις βιβλιοθήκες τους και στα header αρχεία τους.

 

Αν λοιπόν μας ενδιαφέρει το maximum porting του κώδικα μας, καλύτερα να βασιζόμαστε στις srand και rand που προβλέπονται από το ANSI C στάνταρτ.

 

Τώρα, μιας και ο λόγος περί Borland C/C++ Compiler (χρησιμοποιώ τον 5.6.4 του Borland C/C++ Builder), δοκιμάστε να χρησιμοποιήσετε τις ρουτίνες randomize & random ζητώντας αυστηρό ANSI C compilation.. δηλαδή BCC32 –Α source.c , ο compiler (στην έκδοση μου), ορθά, δεν θα αναγνωρίσει τις συγκεκριμένες ρουτίνες καθώς δεν προβλέπονται από το πρότυπο ANSI C (αλλά εντάσσονται στις Borland extensions –AT που είναι default άλλωστε) οπότε το σχόλιο του CodeMan για ανυπαρξία random στην (ANSI) C ήταν σωστό..

Δημοσ.

Ena teleutaio post pano sto arxiko mou.

 

The rand function returns a pseudorandom integer in the range 0 to RAND_MAX.

 

O kodikas einai ANSI C me oti auto simainei(kai emena me para3enepse oti i Microsoft ypostirizei akomi ANSI C, ;-) ). To mono pou exeis na kaneis einai

to RAND_MAX=12 kai ean i o epistrefomenos tyxaios na kaneis i++. Apo ekei pera oti exete proteinei eite einai wrapper autou tou pragmatos eite kolpakia gia na metafertheite sto pedio timon pou thelete. O kathenas dialegei auto pou ton boleuei

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...