Avatar billede chatmanden Nybegynder
21. januar 2002 - 09:35 Der er 12 kommentarer og
3 løsninger

tilfældigt tal ?

hejsa..
hvordan får jeg tilfældige tal mellem a og b ?

har prøvet med..

test = random(a / b);

men så får jeg andre tal, som ik lægger mellem a og b?
Avatar billede jpk Nybegynder
21. januar 2002 - 09:36 #1
test = random(b-a) + a;

Avatar billede disky Nybegynder
21. januar 2002 - 09:37 #2
random(a-b)+a
Avatar billede disky Nybegynder
21. januar 2002 - 09:37 #3
ups, ja \'b-a\'
Avatar billede jpk Nybegynder
21. januar 2002 - 09:39 #4
Det er i øvrigt IKKE et tilfældigt tal, kun et pseudo-tilfældigt tal!
Avatar billede chries Nybegynder
21. januar 2002 - 09:41 #5
srand( (unsigned)time( NULL ) );

int tal = (rand()%(b-a)) + a;

hvor a < b
Avatar billede chatmanden Nybegynder
21. januar 2002 - 09:48 #6
jpk < din løsning virker fint, kan du fortælle hvad du har lavet... ?
Avatar billede disky Nybegynder
21. januar 2002 - 09:51 #7
random(x)

finder et tilfældigt tal imellem 0 og x.

b-a udregner hvor stort området man ønsker tilfældige tal er.

Så finder man altså et tilfældigt tal og adderer derefter a til, så har man tal imellem a og b
Avatar billede chatmanden Nybegynder
21. januar 2002 - 09:54 #8
hvorfor minus og ik plus...og hvad mener han med pseudo tilfældigt tal ??
Avatar billede disky Nybegynder
21. januar 2002 - 10:00 #9
okay

a=10
b=30

Det vil sige vores spektrum er b-a nemlig \'20\'
Det vil sige at det område vi vil have tilfældige tal i er \'20\'

Så random(b-a) finder tilfældige tal imellem 0-20

For så at få tal imellem 10-30 adderer vi \'a\' til det.

Og vupti tilfældige tal imellem 10-30


Pseudo tilfældige tal vil sige at de ikke er ægte tilfældigt, det skyldes at de bliver udregnet ud fra f.eks. nogle timere osv inde i computeren,

En computer kan IKKE lave 100% tilfældige tal, de vil altid være afhængigt af noget andet.
Avatar billede jpk Nybegynder
21. januar 2002 - 10:02 #10
Hvis du nu vil finde et \"tilfældigt\" tal mellem 20 og 50:
a=20, b=50
interval = b-a = 50-20 = 30
altså find et tal mellem 0 og 30 og læg til sidst a til (20), således det bliver mellem 20 og 50.

tallet er pseudo-tilfældigt, fordi det jo ikke er rent tilfældigt (kan ikke lade sig gøre i software).
Tallet bliver typisk beregnet udfra en initializer, som fx kunne være klokkeslættet i ms.
Altså er tallet ikke helt tilfældigt!

Man kan dog få en random number generator der er implementeret i hardware og som giver et relet tilfældigt tal.

Avatar billede disky Nybegynder
21. januar 2002 - 10:05 #11
jpk:

Nope hardware beregner det også ud fra noget tidligere.

Så hardware er ikke bedre end software til det. Højest hurtigere
Avatar billede Slettet bruger
21. januar 2002 - 10:37 #13
Hej allesammen,

For info omkring tilfældige tal, se
http://www.random.org/

Her kan man også forbinde til ejerens HTTP server og få serveret ægte
tilfældige tal, baseret på radiostøj.

Den fedeste måde at generere tilfældige tal, må være fra
http://lavarand.sgi.com/
som bruger en lavalampe\'s bevægelser.




Avatar billede disky Nybegynder
21. januar 2002 - 10:38 #14
netop vi udefra kommendene input så som radiostøj kan man gøre det, ellers ikke.
Avatar billede jpk Nybegynder
21. januar 2002 - 10:44 #15
disky:
Nu KAN hardware jo genere radiostøj...
Og jo, der er flere muligheder.

Du husker måske fra fysik, hvorledes radioaktive materialer har en tilnærmet halveringstid. Denne tid er ikke konstant og faktisk umulig præcis at forudsige inden for en given tidsperiode. Dette kan ligeledes bruges til at generere et ægte tilfældigt tal!

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester