kleines RANDOM - Problem mit C

An Tom:

aus der stdlib.h (bei mir aus LCC):
#define RAND_MAX 0x7FFF

Der RNG generiert also Zahlen von 0 bis 0x7FFF
 
Hallo,

so sieht der vollständige Code dann aus. Ist das richtig? Ich benutze Turob C (ich weiß, ein alter Compiler), wegen graphic.h. Trotzdem beleibt er in der do-while hängen.

Das mit dem "zufall = (int)(rand() * 10);" habe ich ausprobiert, es kommen irgendwelche negativen und positiven Zahlen raus (bsp. -22541, 19855, 458,...).

Code:
#include <stdio.h>
#include <stdlib.h>

int rand(void);
void srand(unsigned int seed);

#define RAND_MAX 0x7FFF

int main(void)
{
	char output[10];
	int i, tmp;

	srand(time(NULL));
	/*initialisiere es auf irgendwas ausser 0-9*/
	memset(output, 0xaa, 10);
	for (i = 0; i < 10; i++)
	{
		do tmp= rand() % 10;
		while (strchr(output, tmp));
		output[i] = tmp;
		/*+ '0' das der user auch wat sieht :D*/
		printf("%c", output[i] + '0');
	}

	return 0;

}

Wie schon erwähnt, in C bin ich nicht so weit, habe nur VBA etwas zu tun.

Lukas
 
Zuletzt bearbeitet:
Hier der komplette source:

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


int main(void)
{
	char output[10];
	int i, tmp;

	srand(time(NULL));
	//initialisiere es auf irgendwas ausser 0-9
	memset(output, 0xaa, 10);
	for (i = 0; i < 10; i++)
	{
		do tmp= rand() % 10;
		while (strchr(output, tmp));
		output[i] = tmp;
		//+ '0' das der user auch wat sieht :D
		printf("%c", output[i] + '0');
	}

	return 0;

}
 
Danke für den Code, leider funktioniert er immernoch nicht mit Turbo C. Ich habe ihn mit dem VC++ kompiliert. Da läuft er. Ich freue mich, wenn ich den Turbo C komplett von meinem PC entfernen kann. Leider muss mich noch zwei Wochen damit auskommen.
 
Ich habe es endlich herausgefunden:

Code:
#include <stdio.h>
#include <time.h>

int rand(void);
void srand(unsigned int seed);

void main(void)
{
	int i = 0;
	int iRand;
	int iArr[10];
	int arrRand[10];
	int j = 0;

	/*iArr = Alle Werte von 0 bis 10*/
	for (i = 0; i <= 10; i++)
		iArr[i] = i;

	clrscr();

	/*srand wird mit den Sekunden der Systemzeit belegt*/
	srand( (unsigned)time( NULL ) );

	while(j < 10)
	{
		/*iRand wird bei jedem Schleifedurchgang eine Zufallszahl
		  zwischen 0 und 10 zugewiesen*/
		iRand = rand()%10;
		for (i = 0; i <= 9; i++)
		{
			/*Falls eine Zahl durch random bestimmt wurde und diese dann
			  mit iArr[i] uebereinstimmt, wird sie im dem Array 
			  iArr[i] zu -1*/
			if (iRand == iArr[i])
			{
				iArr[i] = -1;
				arrRand[j] = iRand;/*alles Zufallszahlen werden in das Array
						     arrRand[j] geschrieben*/
				j++;
				printf("%i   ", iRand);
			}

		}
	}

	printf("\n");

	for(i = 0; i <= 9; i++)
		printf("\n%i", iArr[i]);
		/*printf("%i", arrRand[i]);*/

	getch();

}

Das Problem lag nur an der while - Bedinung. Endlich.

Danke an alle!!!

Lukas
 
Zurück