Problem z liczbami pseudolosowymi

0

Witam,
chcę napisac funkcje generujaca liczby pseudoloswe, program który inicjuje liczbe z przedziału (0,1), a następnie wyznacza kolejne wartości za pomocą wzoru:
screenshot-20190523085307.png

Mam coś takiego, ale nie wiem czy idę w dobrym kierunku:

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int main()
{
    int x,n;
     
    srand((n>0&&n<1)); // czy to odpowiada za inicjacje od przedziału (0,1)?
        
         for(int i = 1; i <= 10; i++) 
             {
                cout <<  x*n + rand() % 1-x*(x*n-1) << endl;
             }
             
}

Chodzi mi głównie o to jak zastosować ten wzór bo nie mam pojęcia i też losuje mi same zera

0

Z przedziału od 0 do 1 to będzie:
(double) rand() / RAND_MAX
a na samym początku zamiast tych cudów daj:
srand(time(NULL));

0

A jak zastosować wzór?
Bo głównie tego nie wiem

0

No jakoś tak pewnie:

for (int i = 1; i <= 10; i++)  {
   x = 1 - (x*x);
   cout <<x<<endl;
}
0

No ale to losuje 1,0 a to ma losować potem chyba inne ale według wzoru a od 0 do 1 ma być inicjującą, albo to ja nie rozumiem zadania

0

Aaa, bo u ciebie nie wiedzieć czemu x jest typu int a nie double. Czemu tak zadeklarowałeś skoro chcesz liczbę od 0 do 1 a nie całkowitą?

0
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>

using namespace std;

int main()
{
   double x,n;
    
    srand(time(NULL));
    
       (double) rand() / RAND_MAX;
       
        for (int i = 1; i <= 10; i++)  
            {
                x = 1 - (x*x);
                cout <<x<<endl;
            }
            
}

Okej mam coś takiego ale właśnie czy ten wzór nie jest błędny do tego, który opisałem na początku?
Nadal losuje wartości 1,0,1,0,1,0

TREŚĆ ZADANIA

Stwórz funkcję generująca liczby pseudolosowe.
Liczba inicjującą niech będzie wartość z przedziału (0,1). Kolejne wartości niech będą wyznaczane ze wzoru na górze strony

2

a gdzie inicjalizujesz x przed pętlą?
Co to ma być to (double) rand() / RAND_MAX;?

0

No zaczynam z c++ i próbuję tego dowiedzieć ;/

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>

using namespace std;

int main()
{
   double x,n;

    srand(time(NULL));
     x=1; // o to chodzi?
       (double) rand() / RAND_MAX;

        for (int i = 1; i <= 10; i++)  
            {
                x = 1 - (x*x);
                cout <<x<<endl;
            }

}

A na takiej zasadzie, dzieki wielkie

3

ale wiesz ze nie masz uzyc rand, tylko napisać własny rand? wg wzoru?

0
kaczus napisał(a):

ale wiesz ze nie masz uzyc rand, tylko napisać własny rand? wg wzoru?

Chodziło Ci o to że to jest przykładowy wzór? Wiem, ale nadal mi ciężko napisać według mojego, więc jak chcesz to chętnie posłucham podpowiedzi

To nie praca domowa, wziąłem sobie kilka zadan i próbuje je zrealizować

0

musisz miec 2 funkcje 1) inicjującą wartość oraz 2) wyliczającą wartość. W drugiej zwracasz kolejne wartości wg wzoru. To nie Ty masz korzystać z funkcji rand i srand, tylko Ty masz takowe własne odpowiedniki napisać. Tak jest w zadaniu.

0

W poniższym przykładzie możesz zobaczyć implementacje prostego generatora liczb pseudolosowych.
https://wandbox.org/permlink/WXNrWadlNKe9ctAe

0
kaczus napisał(a):

musisz miec 2 funkcje 1) inicjującą wartość oraz 2) wyliczającą wartość. W drugiej zwracasz kolejne wartości wg wzoru. To nie Ty masz korzystać z funkcji rand i srand, tylko Ty masz takowe własne odpowiedniki napisać. Tak jest w zadaniu.

można prosić o tą funkcje? obawiam sie ze nie dam rady, nie moge zrozumiec tresci a to jest najgorsze, wiec chyba odpuszcze

i pytanie: jak wprowadzic tabele i rozmiar tabeli jako parametry?

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