Losowanie liczb rzeczywistych

Odpowiedz Nowy wątek
2014-05-20 20:25
0

Witam, potrzebuję jakiegoś zapisu w c który pozwoli mi wylosować jakąkolwiek liczbę (zmiennoprzecinkową też)
Jak to uzyskać. Próbowałem tak:
liczba = (min + rand() * (max-min))
ale zwraca mi to głupoty jakieś ;/

edytowany 1x, ostatnio: Lirdoner, 2014-05-20 20:25

Pozostało 580 znaków

2014-05-20 20:27
0

Wylosuj liczbę między 1 a 100 i podziel przez sto?
I przede wszystkim nie baw się w programowanie przez permutacje.


edytowany 1x, ostatnio: Patryk27, 2014-05-20 20:28

Pozostało 580 znaków

2014-05-20 20:29
0

na widowsie jest i tak niemożliwe osiągnięcie rzeczywistej losowości, rand() nie jest wcale rand nawet jak go zseedujesz, równie dobrze możesz sobie tam wpisać coś z palca

Pokaż pozostałe 11 komentarzy
Otrzymałem 20 innych wyników. - Patryk27 2014-05-20 20:59
@gośćabc, ok dodaje w poście niżej ;P - _13th_Dragon 2014-05-20 21:41
@gośćabc ok co jezeli na windowsie jako seed wezme szumy mikrofonu i na podstawie tego + czasu napisze losowosc sam? - fasadin 2014-05-21 09:14
@fasadin, przecież w poście niżej podałem czas+Id_wątku ale @gośćabc uparł się że skoro clanc inicjalizuje to inaczej to całe windowsy do bani :) - _13th_Dragon 2014-05-21 09:19
@_13th_Dragon przeczytalem posta dopiero po napisaniu ;) - fasadin 2014-05-21 09:26

Pozostało 580 znaków

2014-05-20 20:34
0

min+rand()*(max-min)/RAND_MAX; (min lub max muszą być zmiennoprzecinkowe).

d9b2ad7b7d.png


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-05-20 21:41
To co przykryte to dwa wiersze: #include <windows.h> oraz int f() { return GetCurrentThreadId(); } - _13th_Dragon 2014-05-20 21:43

Pozostało 580 znaków

2014-05-20 21:46
0

@_13th_Dragon

#include <iostream>
#include <random>
#include <vector>

int main()
{
    for(int i = 0 ; i < 10 ; ++i) {
        std::random_device rd;
        std::uniform_int_distribution<int> uniform_dist(0, 1);
        std::default_random_engine el(rd());
        int playTheGame0 = 0, watchGNVids1 = 0;

        int times = 10000;
        while(--times) {
            switch(uniform_dist(el)) {
                case 0:
                    ++playTheGame0;
                    break;
                case 1:
                    ++watchGNVids1;
                    break;
                default:
                    std::cout << "Something went really wrong\n";
                    break;
            }
        }

        if(playTheGame0 > watchGNVids1)
            std::cout << "PLAY THE GAME !!! " << playTheGame0 << " hits!\n";
        else if(playTheGame0 < watchGNVids1)
            std::cout << "WATCH GOING NATIVE !!! " << watchGNVids1 << " hits!\n";
        else
            std::cout << "DO NOTHING\n";

        playTheGame0 = 0;
        watchGNVids1 = 0;
    }

    return 0;
}

output na mingw

http://i.imgur.com/8WMiURE.png

nie zaprzeczysz, że dałem tutaj wiele szans na wykazanie się kompilatorowi, ale on nic sobie z tego nie robi

zauważ też, że używam dużo nowocześniejszego toola od rand()

to jest temat rzeka, nie chce mi się kłócić już :D są mistrzostwa w lola

edytowany 1x, ostatnio: gośćabc, 2014-05-20 21:48
Pokaż pozostałe 3 komentarze
Jeżeli to 10 odpaleń programu to dodaj do inicjalizatora liczb losowych Id wątku i po kłopocie. - _13th_Dragon 2014-05-20 21:59
chłopie ale ja nie chcę, to jest pokazane, jak mingw zawsze zaczyna od tego samego, "ZAWSZE", przy każdym odpaleniu jest to samo, nieważne mam dość :D ten temat jest już wyczerpany, snippet pokazuje to co miał pokazać - gośćabc 2014-05-20 22:01
To że clang zrobił coś ponad to co wymagane w standardzie nie oznacza że rand() pod windows jest zły. Bo to zupełnie nie związane że sobą rzeczy. - _13th_Dragon 2014-05-20 22:07
no pewnie, że wszystko jest ok :D 10 x odpalasz funkcje z nowym seedem a tu niespodzianka http://i.imgur.com/SEBshMl.png do jutra - gośćabc 2014-05-20 22:19
No nie, odpalasz z tym samym seedem. Bo czas się nie zdążył zmienić. - _13th_Dragon 2014-05-20 22:21

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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