zadanie z random liczbami...

0

Hej! Musze napisac program- utworzyc tablice gdzie wszystkie 50 elementow sa zerami , a potem wypelnic ta tablice randomnymi liczbami , z zakresu <1,100> ,zeby w wynikowej tablicy kazdy element był rózny.
napisalem ten program,ale nie wiem jak zrobic,zeby liczby byly rożne : ktos cos?

#include <stdio.h>
#include  <stdlib.h>
#include   <time.h>
int main(){
int Arr[50]={0};
int i;


for(  i = 0; i < 50; i ++){
    Arr[i] = rand ()%101;
    printf("arr[%d]=%d" ,i,Arr[i]);
}
    return 0;
    }

1

Potrzebujesz "shuffle", spróbuj tego:
https://stackoverflow.com/a/6127606

EDYCJA: Jesli nie Ufasz tamtemu algorytmowi, bo

Only effective if N is much smaller than RAND_MAX

Spróbuj "pewnego" shuffle:

void swap(int * a, int i, int j) {
	int tmp = a[i];
	a[i] = a[j];
	a[j] = tmp;
}

int randomFromRange(int b, int e) {
	srand(time(NULL));
	return (rand() % (e - b + 1)) + b;
}

void shuffle(int * arr, int sz) {
	for (int i = 0; i < sz - 1; ++i)
		swap(arr, i, randomFromRange(i, sz - 1));
}
0
lion137 napisał(a):

Potrzebujesz "shuffle", spróbuj tego:
https://stackoverflow.com/a/6127606

EDYCJA: Jesli nie Ufasz tamtemu algorytmowi, bo

Only effective if N is much smaller than RAND_MAX

Spróbuj "pewnego" shuffle:

void swap(int * a, int i, int j) {
	int tmp = a[i];
	a[i] = a[j];
	a[j] = tmp;
}

int randomFromRange(int b, int e) {
	srand(time(NULL));
	return (rand() % (e - b + 1)) + b;
}

void shuffle(int * arr, int sz) {
	for (int i = 0; i < sz - 1; ++i)
		swap(arr, i, randomFromRange(i, sz - 1));
}

a latwiej to jakoś da sie zrobic?) bo za trudne dla mnie :(

0

a latwiej to jakoś da sie zrobic?) bo za trudne dla mnie

Nie widzę mozliwości, przecież tu jest tylko kilka linijek przejrzystego kodu.

0
lion137 napisał(a):

a latwiej to jakoś da sie zrobic?) bo za trudne dla mnie

Nie widzę mozliwości, przecież tu jest tylko kilka linijek przejrzystego kodu.
co robi rand w twoim kodzie(e-b......

1 użytkowników online, w tym zalogowanych: 0, gości: 1