Zufällige Fliesskommazahlen

I
#1
Hallo zusammen,

ich lerne zur Zeit das Programmieren mit c und stehe nun vor einem Problem. ich arbeite mit dem Borland Builder 6.

Ich möchte mit dem Befehl random zufällige Fliesskommazahlen in einen Array einlesen. Doch leider bringt er mir immer nur zufällige Zahlen vor dem Komma, also zufällige Ganzzahlen.

Kann mir vielleicht jemand einen Tipp geben, wie ich das Problem lösen kann?

Programm:
Code:
#define ANZAHL 10

int main()
{
int  i, e;
randomize();
double vektor[ANZAHL];

for (i=0;i<ANZAHL;i++)
                {
                vektor[i]=0;
                }

printf("Wieviele Vektoren sollen eingetragen werden? (max. 10) ");
scanf("%d", &e);

                for (i=0;i<e;i++)
                {
                vektor[i]=random(100);
                }

                printf("\nVector wurde mit Zufallszahlen gefüllt!\n");

for (i=0;i<ANZAHL;i++)
                {
                printf("Vektor[%d]: %lf\n", i, vektor[i]);
                }

getch();
return 0;
}
 
I
#3
Dann müsste es theoretisch mit folgendem Befehl funktionieren:
Code:
for (i=0;i<e;i++)
                {
                vektor[i]=((random(100)+1)/(random(100)+1));
                }
Das Problem ist, das i als Ganzzahl deklariert ist. Wenn ich i aber als Double deklariere dann funktioniert
die Schleife nicht mehr.

Dann erscheint folgende Fehlermeldung:
Code:
[C++ Fehler] Unit1.cpp(21): E2060 Unzulässige Verwendung einer Fließkommazahl
Oder habe ich irgendeinen Denkfehler?
Mach das noch nicht sehr lange..
 

deepthroat

Erfahrenes Mitglied
#4
Dann müsste es theoretisch mit folgendem Befehl funktionieren:

C++:
for (i=0;i<e;i++)
                {
                vektor[i]=((random(100)+1)/(random(100)+1));
                }
Nein. Erstens liefert random eine ganze Zahl (du müßtest also erstmal casten) und außerdem schränkst du den Wertebereich auch extrem ein.

Verwende einfach direkt die Standard-C-Funktionen srand() und rand() wie im Link.

Beachte aber die angesprochene Problematik das diese Random-Funktionen lediglich 15 Bit Randomzahlen generieren und ein double aus 64 Bit besteht.
Das Problem ist, das i als Ganzzahl deklariert ist. Wenn ich i aber als Double deklariere dann funktioniert
die Schleife nicht mehr.
Die Variable i muß als Ganzzahl definiert werden.

Gruß

PS: Bitte verwende die Code-Tags!