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

Zufallszahlen generieren



<< |< 1 2 3 4 5 >| >> 44 Einträge, 5 Seiten
[E|B]
 2005-09-04 16:55
#57624 #57624
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
HiHo,
kennt jemand einen effizienten Algorithmus, der 10 verschiedene Zufallszahlen von 0 bis 100 generieren kann?
Ich habe nur einen Algorithmus der Laufzeitkomplexität O(n²)... Kennt jemand einen anderen perlischen Ansatz?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2005-09-04 17:07
#57625 #57625
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
my %rands = ();

while(10 > keys %rands) {
  my $r = int(rand(100));
  $rands{$r} = 1 unless exists $rands{$r};
}
\n\n

<!--EDIT|esskar|1125844960-->
sesth
 2005-09-05 15:00
#57626 #57626
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
[E|B
,04.09.2005, 14:55]kennt jemand einen effizienten Algorithmus, der 10 verschiedene Zufallszahlen von 0 bis 100 generieren kann?

Genau genommen kann ein Algorithmus das nicht leisten, da die Terminiertheit nicht gegeben ist. Es ist also allenfalls eine Rechenvorschrift.

Das kann in der Praxis aber wohl vernachlässigt werden ;-)
Gruß
Thomas
docsnyder
 2005-09-13 17:34
#57627 #57627
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi Sesth!

Quote
Genau genommen kann ein Algorithmus das nicht leisten, da die Terminiertheit nicht gegeben ist. Es ist also allenfalls eine Rechenvorschrift.


Na, das stimmt ja wohl so nicht! Natürlich gibt es einen Algorithmus dafür und sogar mit der Komplexität O(n):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$maxNumber   = 100;
$n = 10;

for ( $i=0; $i<$maxNumber; $i++ ) {
 $numbers[$i] = $i;
}

for ( $i=0; $i<$n; $i++ ) {
 $theNumber = int(rand(scalar(@numbers)) + 0.5);

 printf("$theNumber\n");

 splice(@numbers, $theNumber, 1);
}


Nach genau 10 Iterationen terminiert das Ding ;o)

Gruß, Doc
vayu
 2005-09-13 18:01
#57628 #57628
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Warum nicht mit:

Code: (dl )
1
2
3
for(0 .. 10) {
print int(rand(100))."\n";
}
\n\n

<!--EDIT|vayu|1126620176-->
pq
 2005-09-13 18:23
#57629 #57629
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=vayu,13.09.2005, 16:01]Warum nicht mit:

Code: (dl )
1
2
3
for(0 .. 10) {
    print int(rand(100))."\n";
}
[/quote]
weil das nicht immer verschiedene zahlen liefert.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
J-jayz-Z
 2005-09-13 18:29
#57630 #57630
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=docsnyder,13.09.2005, 15:34]Na, das stimmt ja wohl so nicht! Natürlich gibt es einen Algorithmus dafür und sogar mit der Komplexität O(n):[/quote]
Okay, stimmt. Und du hast davor auch ganz sicher C/C++ programmiert ;)
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
docsnyder
 2005-09-13 18:40
#57631 #57631
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=J-jayz-Z,13.Sep..2005, 16:29][quote=docsnyder,13.09.2005, 15:34]Na, das stimmt ja wohl so nicht! Natürlich gibt es einen Algorithmus dafür und sogar mit der Komplexität O(n):[/quote]
Okay, stimmt. Und du hast davor auch ganz sicher C/C++ programmiert  ;)[/quote]
Hi J-jayz-Z!

Stimmt! Habe vorher jahrelang C programmiert. Aber: woraus schließt Du das?

Gruß, Doc\n\n

<!--EDIT|docsnyder|1126622512-->
pKai
 2005-09-13 18:56
#57632 #57632
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=J-jayz-Z,13.Sep..2005, 16:29][quote=docsnyder,13.09.2005, 15:34]...[/quote]
Okay, stimmt.[/quote]
Nein, hat den gleichen defekt, wie vayus Ansatz.
I sense a soul in search of answers.
J-jayz-Z
 2005-09-13 18:57
#57633 #57633
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=docsnyder,13.09.2005, 15:34]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$maxNumber   = 100;
$n = 10;

for ( $i=0; $i<$maxNumber; $i++ ) {
$numbers[$i] = $i;
}

for ( $i=0; $i<$n; $i++ ) {
$theNumber = int(rand(scalar(@numbers)) + 0.5);

printf("$theNumber\n");

splice(@numbers, $theNumber, 1);
}
[/quote]
Aus diesem Code. Kein nicht Cler würde die for schleife in Perl so schreiben :p
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
<< |< 1 2 3 4 5 >| >> 44 Einträge, 5 Seiten



View all threads created 2005-09-04 16:55.