Losowanie liczb z przedziału <1,2> , rand().

0

Witam. Jestem na etapie nauki programowania i zaczynam od C. Mam zadanie: Napisz program, który losuje 10 liczb z przedziału [1; 2]. Mam podstawę, to znaczy program który losuje mi z przedziału <0,1>. Ale nie umiem ogarnąć z przedziału <1,2>. Nie będę wklejał całego programu tylko właściwa linie.

printf("%d. Wylosowano %.02f\n", i, tab[i] = ((double)rand() / (RAND_MAX + 1)));

1

Nie dziel przez liczbę o jeden większą, tylko zrób tak, jak robiłeś dla zakresu [0; 1] ((double) rand / RAND_MAX) i dodaj do tego teraz jedynkę — 1 + (double) rand / RAND_MAX.

0

Dzięki wielkie, tylko nadal jest mały problem bo przedział teraz jest (1;2>, a potrzebuje <1;2>. Duża różnica w programie jest? w sensie kodu...

1

Dlaczego sądzisz, że wychodzi ''(1; 2>'' ?
Jeśli (double) rand / RAND_MAX daje Ci <0; 1>, to jak dodasz jedynkę do wyniku, to będziesz miał <0 + 1; 1 + 1>, czyli <1; 2>. Wciąż przedział domknięty dwustronnie.

0

Ja cię rozumiem, z teorii tak wychodzi, to przecież logiczne. Ale w praktyce tak nie jest najniższym wynikiem jest 1.01... Kilka razy uruchamialem program i zawsze ta sama najniższa liczba. Albo może ja źle to rozumiem?

1

Pewnie masz po prostu pecha. U mnie na przykład RAND_MAX to 2 147 483 647 (standard wymaga, by było to co najmniej 32 767). Nawet przy milionie losowań, szansa że zobaczysz tę jedynkę wynosi niecałe 0,047%. Przy miliardzie dochodzisz do 37,2%, a martwić bym się zaczynał dopiero przy stu miliardach prób, gdy szansa na co najmniej jedną jedynkę przekracza 99%.

0
Althorion napisał(a):

martwić bym się zaczynał dopiero przy stu miliardach prób, gdy szansa na co najmniej jedną jedynkę przekracza 99%.

Czy rand zapewnia wykorzystanie całego przedziału od 0 do RAND_MAX? Jeśli użyty prymitywny generator po prostu nie generuje jakiejś wartości, to możesz mieć tryliony losowań a prawdopodobieństwo ci nie pomoże.

0

Tak, ale ja nie o tym — pisałem, że martwić się można dopiero wtedy, jak liczba wykonanych prób będzie odpowiednio duża. Przy niewielu próbach pech jest co najmniej równie dobrym wytłumaczeniem jak niedostatki generatora.

0

Masz rację... Teraz rozumiem... Dzięki :D

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