Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]1133[/thread]

zufällige Zufallszahlen



<< >> 6 Einträge, 1 Seite
J-jayz-Z
 2005-08-27 02:12
#11255 #11255
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Na ja, nach ewigem Suchen hatte ich die faxen dicke und dachte mir, ich schreib doch mal einen Post. Wie bekomme ich unter C rand() mit srand() gesagt, das er immer, nicht nur jede Sekunde Zufallszahlen zur Verfügung stellen soll? Hier ein kleines Prog, das mein Problem veranschaulicht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>

int main( void ) {
int i;
srand( time(NULL));
for(i=0; i <= 10; i++)
printf("%d\n", rand());
return(1);
}

führt man das mehrmals in der Sekunde aus, bekommt man auch mehrmals die selben Zahlen...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-08-27 04:14
#11256 #11256
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
mit rand und srand bekommst du immer nur pseudo-numbers hin, aber versuch mal

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, const char *argv[]) {
int i;
srand( clock() );
for(i=0; i <= 10; i++)
printf("%d\n", rand());
return 0;
}
J-jayz-Z
 2005-08-27 04:20
#11257 #11257
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Da bekomm ich immer die selben Zahlen...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-08-27 15:20
#11258 #11258
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
stimmt, ich depp

versuch es mal so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>

int main(int argc, const char *argv[]) {
     int i;
     unsigned int ts;
     struct _timeb timebuffer;
     
     _ftime( &timebuffer );
     memcpy(&ts, &timebuffer, sizeof(unsigned int));

     srand( ts );
     for(i=0; i <= 10; i++)
             printf("%d\n", rand());
     return 0;
}
\n\n

<!--EDIT|esskar|1125141632-->
J-jayz-Z
 2005-08-27 15:44
#11259 #11259
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Da bekomm ich ne Compiler Fehlermeldung:
Code: (dl )
1
2
3
rootcris@J-jayz-Z:~/C$ gcc -o zufall zufall.c 
zufall.c: In Funktion »main«:
zufall.c:9: error: storage size of `timebuffer' isn't known
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-08-27 15:53
#11260 #11260
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
was hast du denn für einen C compiler

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>

int main(int argc, const char *argv[]) {
int i;
unsigned int ts;
struct _timeb timebuffer;

_ftime( &timebuffer );
ts = timebuffer.time * 1000 + timebuffer.millitm;

srand( ts );
for(i=0; i <= 10; i++)
printf("%d\n", rand());
return 0;
}


so funzt es wenigstens richtig
<< >> 6 Einträge, 1 Seite



View all threads created 2005-08-27 02:12.