[C] Proste pytanie z liczb pseudolosowych.

Chungu
Użytkownik
Użytkownik
Posty: 121
Rejestracja: 21 paź 2016, o 20:57
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 42 razy

[C] Proste pytanie z liczb pseudolosowych.

Post autor: Chungu »

Witam.
Piszę sobie program i chciałem w jednej z jej części wpisać do tablicy liczby pseudolosowe z zadanego przez użytkownika przedziału zadanego przez użytkownika (min to dół; a max to góra tego przedziału;[min,max]) jednak nie wiem dlaczego gdy wpiszę sobie np. min=2 max=20 to losuje mi 21 albo 22 O.o
Fragment kodu odpowiedzialnego za owo losowanie:

Kod: Zaznacz cały

srand(time(NULL));
 for(i=0;i<r;i++)
    {
        tab[i]=min+rand()%max+1;
    }
Awatar użytkownika
NogaWeza
Użytkownik
Użytkownik
Posty: 1481
Rejestracja: 22 lis 2012, o 22:24
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 147 razy
Pomógł: 300 razy

[C] Proste pytanie z liczb pseudolosowych.

Post autor: NogaWeza »

No bo ta formuła jest do niczego. rand() może Ci wylosować liczbę, która daje resztę \(\displaystyle{ 19}\), a wtedy dostaniesz \(\displaystyle{ 2 + 19 + 1 = 22}\)
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Proste pytanie z liczb pseudolosowych.

Post autor: kalwi »

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
 
int main(void)
{
	const int MAX = 20;
	const int MIN = 2;
	srand(time(NULL));
	double tab[100];
	for(int i = 0; i < 100; ++i)
	{
		tab[i] = MIN + (double)(rand() % INT_MAX) / INT_MAX * (MAX - MIN);
		printf("%.2lf
", tab[i]);
	}
	return 0;
}
 
ODPOWIEDZ