Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Array vullen met bools

None
6 antwoorden
  • Ik ben net nieuw in c++, en ik wil een array vullen met random 1 of nul. Het grootste deel van arrays heb ik nu onder de knie, maar de random functie van c++ snap ik na flink wat goeglen nog steeds niet :cry: Kan iemand mij helpen aan een bool functie die random true of false oplevert? (zie dit niet als een 'doe dit voor mij'-post, door mij hiermee te helpen denk ik dat ik weer een heel stuk extra c++ snap)
  • Hier staat het volgens mij goed uitgelegd: http://www.daniweb.com/forums/thread1769.html

    Als de code op bovenstaande site je duidelijk is, dan zou je in staat moeten zijn om een functie te maken die random true of false returnt. (Dat zou je dus op kunnen lossen door in de functie een random getal in het bereik 0 tot 1 te laten genereren, waarbij een waarde van 0 false returnt en een waarde van 1 true.)
  • waarom levert dit eigenlijk altijd 0 op? [code:1:8e70594398]
    int main() {
    float b;
    for(int a = 1; a <=11; a++) {

    b = rand() / RAND_MAX;
    cout << b << endl;
    }

    return 0;
    }[/code:1:8e70594398]
    dit is de manier waarop ik het zelf bedacht had, voor een float tussen 0 en 1…
  • Omdat de rand() functie een integer (int) oplevert, en RAND_MAX is ook een integer-constante. Als je een int door een int deelt, verlies je alles achter de komma omdat integers alleen volledige getallen zijn.

    RAND_MAX is (bijna) altijd groter dan wat rand() oplevert (tenzij rand() een keer precies RAND_MAX oplevert), dus zal die deling bijna altijd een getal kleiner dan 1 opleveren. Als je alles achter de komma weghakt, houd je dus altijd 0 over.

    De conversie naar float gebeurt pas NA de berekening.
  • ah dit werkt:
    [code:1:65d26ed91c]
    b = (float)rand() / (float)RAND_MAX;
    [/code:1:65d26ed91c]
  • Dat klopt.

    In principe hoef je maar één van de twee getallen te casten naar een float, omdat een berekening met 1 float en 1 integer ook een float als resultaat heeft.

    dus

    [code:1:37ce60b6bf]b = (float)rand() / RAND_MAX;[/code:1:37ce60b6bf]

    en

    [code:1:37ce60b6bf]b = rand() / (float)RAND_MAX;[/code:1:37ce60b6bf]

    zouden beiden ook moeten werken.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.